Javascript 访问和修改iframe内容,postMessage vs jQuery.contents()
这是有可能的Javascript 访问和修改iframe内容,postMessage vs jQuery.contents(),javascript,jquery,postmessage,Javascript,Jquery,Postmessage,这是有可能的 $('#iframe_id').contents().find('.stuff_to_modify).addClass('whatever') 但是也可以使用事件,通过从iframe向脚本发送do_something消息,该脚本在收到消息时进行修改(添加该类) 我想知道我应该走哪条路,以及这两种方法之间的区别(缺点、优点) jQuery方法似乎更好,因为我不再需要在iframe中包含任何脚本了与您给出的jQuery示例的主要区别在于,postMessage支持跨源通信 也就是说,如
$('#iframe_id').contents().find('.stuff_to_modify).addClass('whatever')代码>
但是也可以使用事件,通过从iframe向脚本发送do_something消息,该脚本在收到消息时进行修改(添加该类)
我想知道我应该走哪条路,以及这两种方法之间的区别(缺点、优点)
jQuery方法似乎更好,因为我不再需要在iframe中包含任何脚本了与您给出的jQuery示例的主要区别在于,postMessage支持跨源通信
也就是说,如果承载iframe的父页面来自域a,而iframe的内容来自域B,那么postMessage允许您进行通信,而jQuery方法将导致安全错误
您提供的链接是指向浏览器的window.postMessage实现的java脚本包装,对于不支持该链接的浏览器,它会返回到窗口位置哈希轮询。链接中列出了其他好处
因此,如果这两个页面来自同一个来源,即来自同一个域,那么您可以使用jQuery方法本身。如果它来自两个不同的来源,您可能必须使用JS包装器。与您给出的jQuery示例的主要区别在于,postMessage支持跨来源通信
也就是说,如果承载iframe的父页面来自域a,而iframe的内容来自域B,那么postMessage允许您进行通信,而jQuery方法将导致安全错误
您提供的链接是指向浏览器的window.postMessage实现的java脚本包装,对于不支持该链接的浏览器,它会返回到窗口位置哈希轮询。链接中列出了其他好处
因此,如果这两个页面来自同一个来源,即来自同一个域,那么您可以使用jQuery方法本身。如果它来自两个不同的来源,您可能必须使用JS包装器。如果我是您,我必须使用jqueryIf我是您,我必须使用jquerywhat如果父文档有https而iframe没有,它还能工作吗?@Alex协议、端口和主机应该相同,以处理来自同一域的两个页面。因此,如果一个是http,另一个是https,则可能必须使用window.postMessage,因为它被视为跨源。我建议您也测试这个场景。如果父文档有https,而iframe没有,它还会工作吗?@Alex协议、端口和主机应该相同,以处理来自同一域的两个页面。因此,如果一个是http,另一个是https,则可能必须使用window.postMessage,因为它被视为跨源。我建议您也测试这个场景。