我正在尝试在网页中运行一个脚本,该脚本应该在<iframe>
中执行。现在我可以调用<iframe>
中设置的函数。我只是在运行脚本到<iframe>
的上下文时遇到问题。
以下是我在<iframe>
$('#iframe').get(0).contentWindow.performSearch();
现在我没有调用preformSearch
函数,而是希望运行一个脚本 - 对于这个例子,这是脚本......
console.log('worked!');
我的实际剧本很大,所以我不会把它放在这里 - 为了这个问题。
那么,有没有办法在<iframe>
的上下文中运行该脚本?例如,我的第一个猜测是/是..
$('#iframe').get(0).contentWindow.function(){
console.log('worked!');
}
我之前从未通过像<iframe>
之类的东西搞砸过功能,所以我很难过。
提前感谢您的帮助!
注意我正在使用NW.js(Node-Webkit)删除所有<iframe>
限制。
注意v2 preformSearch()
函数只是我在框架中调用函数的重新定位。
答案 0 :(得分:0)
您可以尝试使用消息传递机制 这意味着在父框架上,您可以使用
发送消息 var win =$("#iframe").contentWindow;
win.postMessage({ messageType: "predefinedMessage", features: data }, '*');
而且在iframe中你可以得到消息
function FrameCommunicator(attachManager) {
var mfilesFrame;
function _actOnMessage(data) {
if (data.messageType === "predefinedMessage") {
//perform here what you need
}
}
window.addEventListener("message", function (e) {
var data = e.data;
mfilesFrame = e.source;
_actOnMessage(data);
}, false);
}
现在的问题是iframe和父fram如果引用远程可以拥有相同的代码。
另一种方法是将消息的内容作为JS发送并使用eval运行它,但这是冒险的,不好的做法和许多其他事情:)