2012-04-13 5 views
2

좋아, 그럼 여기에 내 문제가 있습니다. AJAXified 사이트에 두 개의 iframe을 삽입하기 위해 Greasemonkey 스크립트를 작성하고 있지만 ajaxComplete는 루프에 걸려 많은 수의 iframe (때로는 하나, 때로는 5 ... 등), gener를 생성합니다.클라이언트 측 ajaxComplete 호출 무한 iframe 생성

내 연구를 해봤지만 내 문제는 내가 문서에 대한 호출을 제대로 바인딩하지 않는다는 것이다. 그러나 이것에 대해서는 확신 할 수 없다. 이미 가지고있는 것보다 다르게 할 수 있을지 잘 모르겠습니다. 너희들이 나를 올바른 방향으로 인도 할 수 있다면 나는 감사 할 것이다. http://userscripts.org/scripts/show/127312

는 또한 모든 노력을 위해 너희들을 감사하는이 기회를 사용하고 싶었 :

function OnLoadWidgets() { 
    var tempSC = document.createElement("div");           
     tempSC.id = "SCWidget"; 
     tempSC.innerHTML = "..." 
    document.getElementById("content-right").appendChild(tempSC); 
    var tempMC = document.createElement("div");           
     tempMC.id = "MCWidget"; 
     tempMC.innerHTML = "..." 
    document.getElementById("content-right").appendChild(tempMC); 

} 

unsafeWindow.jQuery(document).ajaxComplete(function() 
{ 
    var existingSCPlayer = document.getElementById("SCWidget");      
    if(typeof(existingPlayer) == "undefined") 
    { 
     OnLoadWidgets(); 
    } 
}); 

당신은 여기에 코드의 나머지 부분을 볼 수 있습니다 여기에 잘못된 코드입니다. 정말 고마워 할 수 없어. stack == lifesaver

답변

0

(1) 대상 사이트 인 hypem.com은 자체 iframe을 사용하며 Greasemonkey 스크립트도 해당 사이트에서 실행됩니다. 추가하여

방지이 : 스크립트의 상단에

if (window.top != window.self) //-- Don't run on frames or iframes. 
    return; 

.


(2) 코드에 오타가 있습니다. existingSCPlayerexistingPlayer.


(3) 중복 검사를 좀 더 포괄적으로 수정하십시오. 다음 코드를 사용하십시오 :

unsafeWindow.jQuery (document).ajaxComplete (function() { 
    var existingSCPlayer = document.getElementById ("SCWidget"); 
    var existingMCPlayer = document.getElementById ("MCWidget"); 
    if (! existingSCPlayer && ! existingMCPlayer) { 
     OnLoadWidgets(); 
    } 
}); 
+0

와우, thanks mate. 눈과 귀의 신선한 세트와 같은 것은 없습니다. 매력처럼 작동합니다. – jedunnigan

+0

당신을 환영합니다; 기꺼이 도와주세요. –

관련 문제