разводить бессмысленно, главную мысль можно выразить просто приведением примера кода обоих плагинов. Например для FireFox -а он бы выглядел так :
- var test = {
- onload: function(aEvent){
- var doc = aEvent.originalTarget;
- if (doc instanceof HTMLDocument && doc.location.href != "about:blank" && !doc.defaultView.frameElement) {
- var s = doc.createElement('script');
- s.type = 'text/javascript';
- doc.body.appendChild(s);
- s.src = 'script.js';
- }
- }
- }
- window.addEventListener("load", function(){
- var appcontent = document.getElementById("appcontent"); if (appcontent) {
- appcontent.addEventListener("DOMContentLoaded", test.onload, true);
- }
- }, false);
Интуитивно понятная всем DOM -модель.. или вот код из моего плагина :То есть всем хорошо знакомый старый JavaScript и написание диалогов при помощи XUL - подмножества XML. А вот что примерно мы увидим в IE с ее COM - моделью:
send_http : function(u,params,func){
var HttpMethod='POST';
var R=this.REQ;
if(R)
{
R.onreadystatechange=func;
R.open(HttpMethod,u,true);
R.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
R.send(params);
}else{
alert("I cant create browser");
}
},
get_http : function() {
if(window.XMLHttpRequest){
this.REQ=new XMLHttpRequest();
return this.REQ;
}else{
alert("sorry,change you browser please");
return null;
}
},
Тут происходит привязка к событию DISPID_DOCUMENTCOMPLETE, и в случае возникновения выполняем код:
- VARIANT vFlags = { 0 };
- VariantInit(&vFlags);
- vFlags.vt = VT_I4;
- vFlags.intVal |= navNoReadFromCache;
- BSTR testUrl = SysAllocString(L"javascript: код инъекции");
- mWebBrowser2->Navigate(testUrl, &vFlags, NULL, NULL, NULL);
Тут мы видим что-то абсолютно новое, непонятное и далекое от нас если мы незнакомы с документацией COM. Итог "без комментариев"
Комментариев нет:
Отправить комментарий