有可能$('#iframe_id').contents().find('.stuff_to_modify).addClass('whatever');
但是也可以使用window.postMessage事件,方法是通过从iframe向脚本发送do_something消息,该脚本会在收到消息时进行修改(添加该类)。
我想知道应该走哪条路,以及这两种方法之间的区别(缺点,优点)。
jQuery方法似乎更好,因为我不再需要在iframe中包含任何脚本
最佳答案
您提供的window.postMessage与jQuery示例之间的主要区别在于,postMessage启用跨域通信。
这意味着,如果承载iframe的父页面来自域A,而iframe的内容来自域B,则postMessage允许您进行通信,而jQuery方法将导致安全错误。
您提供的链接是该浏览器的window.postMessage实现的Java脚本包装,对于不支持该浏览器的浏览器,它会退回到窗口位置哈希轮询。其他好处列在您的链接本身中。
因此,如果两个页面来自同一来源,即来自同一域,则您可以使用jQuery方法本身。如果它来自两个不同的来源,则可能必须使用JS包装器。
关于javascript - 访问和修改iframe内容,postMessage与jQuery.contents(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10978919/