iThome online | iThome Blog | iThome周刊訂閱

載入中...

wordsmith

IT邦好手
9級

在Firefox使用user script,有辦法呼叫瀏覽中的網站的function嗎?
標籤:javascript

用Greasemonkey寫了一個User Script,可以用在twitter上,而twitter有一個ReplyTo的功能,我想從User Script直接去呼叫它,但結果是發生錯誤,錯誤訊息說我呼叫的不是一個function。

雖然要做的功能,繞一下路,自己重刻也可以辦得到,只是不了解其中的道理是什麼?

稍微查了一下Greasemonkey的文件,它說為了怕不同的user script彼此互相干擾,因此它的做法是將我們寫的script包在一個匿名的function中去執行,一旦執行後就不存在了。

不過JavaScript的執行變數或函式的方式,在找不到的時候,不是為一直往上找,一直找到Globe為止嗎?如果是這樣,為什麼還會說not defined呢?

筆誤,Globe -> Global

2008-09-18 00:23:04 補充



收到書籤:發佈到twitter      
解決時間:2008-10-01 10:44:31
發問時間:2008-09-18 00:21:27

▼ ADVERTISEMENT ▼

最佳解答(發問者自選)
8

回答:fillano ( IT邦好手2級 )

時間:2008-09-18 12:04:23

GreaseMonkey好像是在一個受限的環境下跑?或是跟網頁其實不是在同一個環境裡面,但是透過document還是能存取網頁上的元件。

用一小段程式在greasemonkey中偵測window物件的屬性,看起來跟直接在網頁中執行這一段程式有所不同:

(function(){
	var str = "";
	for (var i in window) {
		str += i + " : " + window[i] + "\n";
	}
	alert(str);
})();


我試過上面的程式,一些global的function可以看到,但是內容是undefined。

這是在ff3執行的結果。看來沒解。

2008-09-18 12:47:48補充
另外,即使用addEventListener把一些程式attach到網頁中,這些程式還是呼叫不到網頁javascript context裡面的東西。我想這樣設計是為了安全考量,所以greasemonkey裡面的javascript是在他自己的context中執行的,可以使用document存取網頁元件、使用greasemonkey提供的一些global functions。但是javascript是在獨立的context中執行。



同樣地,從網頁上,也無法看到greasemonkey加到網頁元素事件的程式,但是可以執行。
2008-09-18 12:47:49補充
另外,即使用addEventListener把一些程式attach到網頁中,這些程式還是呼叫不到網頁javascript context裡面的東西。我想這樣設計是為了安全考量,所以greasemonkey裡面的javascript是在他自己的context中執行的,可以使用document存取網頁元件、使用greasemonkey提供的一些global functions。但是javascript是在獨立的context中執行。



同樣地,從網頁上,也無法看到greasemonkey加到網頁元素事件的程式,但是可以執行。
2008-09-18 13:16:24補充
嗯嗯,在手冊上看到一些例子,似乎跟這個情況不一致(呼叫blogline定義的script)。不知道是不是到ff3改的。
2008-09-18 13:44:00補充
在這裡看到一些資訊:

http://www.oreillynet.com/pub/a/network/2005/11/01/avoid-common-greasemonkey-pitfalls.html?page=5



所以你要透過unsafewindow.replyTo()來呼叫。

[-隱藏]

回應

wordsmith 說:

果然可以用unsafewindow.replyTo()來呼叫,真是太好了。

感謝fillano大大。

2008-09-18 16:29:49

在Firefox使用user script,有辦法呼叫瀏覽中的網站的function嗎?

目前沒有回答

回應

請填寫您的回應,長度限為1,000個字,回應不計點數,也不限使用次數



 

檢舉違規

違規事項:

*補充檢舉理由(可省略),字數不可超過100字

推薦

推薦理由:


*給回答者的鼓勵(可不填),字數不可超過100字

▼ ADVERTISEMENT ▼

熱門標籤

 cisco   crystal   exchange   it   java   javascript   linux   m-power   mail   microsoft   msnlib   msnp15   msnsdk   msn機器人   mysql   nas   oracle   outlook   pmi   pmp   raid   report   sap   server   smartquery   sql   vista   windows   xp   倍力   倍力資訊   免費軟體   國際專案管理師   報表   專案管理   微軟   有話大聲說   活動   省錢   網路   網路儲存   網路管理   網頁安全   網頁設計   資安   資料庫   資訊安全   防毒軟體   2003   2008