如何使用bookmarklets修改iframe中的javascript函数?

时间:2011-03-25 11:57:35

标签: javascript iframe bookmarklet

假设我有一个带有iframe的html页面,它有自己的javascript函数。

function foo(){
//doSomething
}
  • Web浏览器指向 主页。
  • 主页面和iframe都是 在同一个域中。

我可以从地址栏访问/调用这些功能。

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

我可以通过在地址栏中输入新的函数定义来替换主页面中的js函数。 但是它不适用于iframe内的函数。

javascript:function foo(){//doSomethingElse}

这似乎只是将该功能添加到主页面。 iframe仍然使用自己的foo函数。

我可以在新标签中打开iframe,然后就可以修改该功能了。 但我想知道是否可以通过在主页的地址栏中输入ifs来替换iframe中的js函数?

1 个答案:

答案 0 :(得分:0)

尝试以下方法,它将foo视为变量并将其指定为函数引用(或类似的东西......我的javascript不是最好的)。使用enclosing()()可以忽略返回的值,并且页面不会重新加载。

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

(在firefox中测试)