在iFrame上下文中运行Javascript
我正在尝试在网页中运行脚本,该脚本应在在iFrame上下文中运行Javascript,javascript,jquery,html,iframe,nw.js,Javascript,Jquery,Html,Iframe,Nw.js,我正在尝试在网页中运行脚本,该脚本应在中执行。现在我可以调用中设置的函数。。我只是在运行脚本到的上下文时遇到问题 下面是我如何运行 现在,我希望运行一个脚本,而不是调用preforgsearch函数-对于本例,这是脚本 console.log('worked!'); 我的实际脚本很大,所以我不会把它放在这里——因为这个问题 那么,有没有办法通过的上下文运行该脚本?例如,我的第一个猜测是 $('#iframe').get(0).contentWindow.function(){ console
中执行。现在我可以调用
中设置的函数。。我只是在运行脚本到
的上下文时遇到问题
下面是我如何运行
现在,我希望运行一个脚本,而不是调用preforgsearch
函数-对于本例,这是脚本
console.log('worked!');
我的实际脚本很大,所以我不会把它放在这里——因为这个问题
那么,有没有办法通过
的上下文运行该脚本?例如,我的第一个猜测是
$('#iframe').get(0).contentWindow.function(){
console.log('worked!');
}
不过,我以前从未在通过
之类的程序运行函数时遇到过麻烦,所以我被难倒了
提前谢谢你的帮助
注意我正在使用NW.js(Node Webkit)删除所有
限制
注意v2
preforgsearch()
函数只是我在框架中调用函数的一个例子。您可以尝试使用消息传递机制
这意味着在父帧上,您可以使用
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运行它,但这是有风险的、不好的做法,还有很多其他事情:)函数使用jQuery吗?如果是这样,则无法将函数直接绑定到新窗口,或者
iframeWindow.jQuery
将未定义。但是可以很容易地将窗口
作为函数的参数传递…显示函数本身的示例您必须在iframe来源的页面上将performSearch
作为函数来运行。您必须在iframe来源的页面上将performSearch
作为函数来运行。该函数可以运行,但这只是一个如何调用
函数的示例。我现在尝试插入一个脚本,而不是一个函数。(在
正在查看的页面上已经设置了搜索,我的新代码不是。)回答很好,但很遗憾,我不能做我想做的事情。我没有访问iFrame的代码。onmessage
不受IE支持。由于市场上的大多数浏览器都是IE,不幸的是这不是一个好主意。我使用的是node webkit,只要它在Chrome中工作,这就是我所需要的。
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);
}