2011-03-25 58 views
3

可以說我有一個iframe,它有自己的JavaScript功能的HTML頁面。如何使用bookmarklets修改iframe中的javascript函數?

function foo(){ 
//doSomething 
} 
  • Web瀏覽器指向 主頁。
  • 兩個主頁面和iframe在同一域中 。從地址欄

我可以訪問/調用這些函數。

javascript:document.getElementById('iframe').contentWindow.foo(); 

我可以通過在地址欄中輸入新的函數定義來替換主頁面中的js函數。 但是它不適用於iframe中的函數。

javascript:function foo(){//doSomethingElse} 

這似乎只是將該功能添加到主頁面。 iframe仍然使用自己的foo函數。

我可以在新標籤中打開的iframe,那麼它是可以修改的功能。 但我不知道是否有可能通過在主頁面的地址欄中輸入它們來替換iframe中的js函數?

+0

有趣的問題,但是...我只是好奇使用這樣的好辦法的。爲什麼要這麼做? – Johnny5 2011-03-25 13:02:44

+0

它可以是有用的,當你想通過書籤工具,你可以重用現有的JavaScript代碼,而不是訴諸於一個單獨的選項卡中打開這些幀添加/修改功能的網頁。 – Alexander 2011-03-25 14:51:35

回答

0

試試下面,把富作爲一個變量,並將其分配作爲一個函數引用(或類似的東西...我的javascript是不是最大的)。 enclosing()()使得返回值被忽略,頁面不會重新加載。

javascript:(document.getElementById('iframe').contentWindow.foo=function(){alert('bar');})() 

(在Firefox測試)