0

我正在構建一個GreaseMonkey測試腳本,每次訪問特定站點時都會生成GM_xmlhttpRequest。 GM_xmlhttpRequest只應該在找到的第一個「文檔」(父窗口)上觸發,它應該忽略iframe和其他子窗口(我不需要iframe的url)。GM_xmlhttpRequest - 父窗口和Iframe窗口上的觸發器 - 只能在父窗口上觸發

一些想法和可能的解決方案:

1)我試圖插入在GM_xmlhttpRequest的onload回調休息。結果:腳本不響應。 FireBug中沒有錯誤消息。 (我想休息只能在循環。)

onload: function(response) { 
    if (response.status == 200) break; 
} 

2)前插入一個的addEventListener /在GM_xmlhttpRequest後: 結果:腳本不響應。 FireBug中沒有錯誤消息。

document.addEventListener("load", 
// (Insert the GM_xmlhttpRequest code here - see below) 
,false); 

3)想法:GM_xmlhttpRequest可以在第一次成功請求後「取消」嗎?無論是在onload部分,還是在腳本之後(如document.removeEventListener取消document.addEventListener)。

4)想法:GreaseMonkey可以識別父窗口嗎?所以腳本只能在父窗口中運行?

此外,我不希望腳本作爲同步調用,因爲它會減慢速度。

// ==UserScript== 
// @name   GreaseMonkey xmlhttpRequest test 
// @include   http://www.jp.dk/* 
// ==/UserScript== 

GM_xmlhttpRequest({ 
    method: "POST", 
    url: "http://localhost/do_stuff", 
    data: "url=" + document.location.href, 
    headers: { 
     "Content-Type": "application/x-www-form-urlencoded" 
    }, 
    onload: function(response) { 
     if (response.responseText) 
      alert("GreaseMonkey said: " + response.responseText); 
    } 
}); 

回答

0

這就是所謂的frame buster script

if (window === parent) { 
    // Trigger! 
} 
+0

偉大的作品!謝謝.. :-) – 2010-01-22 15:01:44