나는 URL이 변경되었는지 확인하기 위해 nsIWebProgressListener
interface을 사용하고 있습니다. 있다면 링크를 다시 작성하고 싶습니다. 다음은 변화를 처리하기 위해 조각 (코드 위의 링크에서 페이지 하단에서 촬영)firefox addon의 window.location.replace가 전체 크롬을 제거합니다!
var myExt_urlBarListener = {
QueryInterface: function(aIID)
{
if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
aIID.equals(Components.interfaces.nsISupports))
return this;
throw Components.results.NS_NOINTERFACE;
},
onLocationChange: function(aProgress, aRequest, aURI)
{
myExtension.processNewURL(aURI);
},
onStateChange: function(a, b, c, d) {},
onProgressChange: function(a, b, c, d, e, f) {},
onStatusChange: function(a, b, c, d) {},
onSecurityChange: function(a, b, c) {}
};
var myExtension = {
oldURL: null,
init: function() {
// Listen for webpage loads
gBrowser.addProgressListener(myExt_urlBarListener,
Components.interfaces.nsIWebProgress.NOTIFY_LOCATION);
},
uninit: function() {
gBrowser.removeProgressListener(myExt_urlBarListener);
},
processNewURL: function(aURI) {
if (aURI.spec == this.oldURL)
return;
// now we know the url is new...
start_work(aURI.spec);
this.oldURL = aURI.spec;
}
};
window.addEventListener("load", function() {myExtension.init()}, false);
window.addEventListener("unload", function() {myExtension.uninit()}, false);
그리고 함수의 :
function start_work(url)
{
result = check(url);
if (result) {
setCookie('bws', 'true', 1, '/');
window.location = result; // or window.location.replace, doesn't matter
}
}
여기 무슨 일이야! alt text http://grab.by/20eP 전체 브라우저/주소 표시 줄/크롬이 사라지는 것을 볼 수 있습니다!
어떤 도움이 필요합니까?
추가? –