2010-01-27 5 views
0

나는 URL이 변경되었는지 확인하기 위해 nsIWebProgressListenerinterface을 사용하고 있습니다. 있다면 링크를 다시 작성하고 싶습니다. 다음은 변화를 처리하기 위해 조각 (코드 위의 링크에서 페이지 하단에서 촬영)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 전체 브라우저/주소 표시 줄/크롬이 사라지는 것을 볼 수 있습니다!

어떤 도움이 필요합니까?

+0

추가? –

답변

2

간단한 : 크롬에 대한 오타 chorme가 window.content.location

+1

예. 이 경우 그의 코드는 크롬 컨텍스트에 있으므로 창은 브라우저 UI 인 크롬 창을 가리 킵니다. – sdwilsh

관련 문제