2011-12-04 2 views
2

나는 사용자가 미리 정의 된 사이트의 홈페이지를 방문 할 때 자동으로 같은 사이트의 다른 페이지로 리디렉션됩니다 파이어 폭스 확장을 쓰고 있어요. 문제는 홈페이지뿐만 아니라 특정 사이트의 모든 페이지를 리디렉션하므로 리디렉션 루프가 생성된다는 것입니다. 사용자가 홈페이지를 방문 할 때마다 리다이렉트하고, 같은 사이트의 어떤 페이지를 방문 할 때가 아니라파이어 폭스 자동 리디렉션 할 때 사용자가 방문하는 특정 사이트

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... 
    //alert(aURI.spec); 
    if(aURI.spec.search("www.examplesite.com") > -1){ 
     gBrowser.contentDocument.location.href = "http://www.examplesite.com/page1"; 
    } 
    this.oldURL = aURI.spec; 
    } 
}; 

window.addEventListener("load", function() {myExtension.init()}, false); 
window.addEventListener("unload", function() {myExtension.uninit()}, false); 

답변

1

은 분명히이 ... 당신이 실제 특정 URL에 대한 비교하고 너무 if(aURI.spec.search("www.examplesite.com") > -1){ 변화의 문제인가?

+0

어떻게해야합니까? – user1080292