如何从父网页运行 iFrame 的脚本
How to run an iFrame's script from the parent web page?
好的,假设我有一个网页,网页B.网页B有一个名为"test()"的函数。现在假设我有另一个网页,网页A.网页A有一个带有网页B源的iFrame。如何从网页 A 执行网页 B 的"test()"函数?
你不能通过父页面中的任何代码"直接"控制 iframe 中页面的 javascript。
但是,如果您能够更改两个页面,则可以更改"页面B"以根据查询字符串中的参数运行javascript。
在"页面 A"中,将 iframe src 设置为如下所示:
http://mydomain.com/pageb.html?func=myfunc¶m=foo¶m2=bar
然后在"页面B"中运行一些像这样的JavaScript:
function queryToLookup(query) {
var lookup= {};
var params= query.slice(1).split(/[&;]/);
for (var i= 0; i<params.length; i++) {
var ix= params[i].indexOf('=');
if (ix!==-1) {
var name= decodeURIComponent(params[i].slice(0, ix));
var value= decodeURIComponent(params[i].slice(ix+1));
if (!(name in lookup))
lookup[name]= [];
lookup[name].push(value);
}
}
return lookup;
}
function myTestFunc(p1, p2) {
alert('param 1 is ' + p1 + ' and p2 is ' + p2);
}
jQuery(document).ready(function() {
var params = queryToLookup(location.search);
switch(lookup['func'])
{
case 'myfunc': myTestFunc(params['param1'], params['param2']);
case 'otherfunc': myTestFunc('someval', params['param1']);
default: alert('No function requested');
}
});
这当然是一个非常基本的例子,但可以适应做各种疯狂的事情。限制在于您无法真正将消息传递回"页面 A",尽管您"可以"(我认为)调整页面 A 中的技术然后调用top.location = 'pagea.html?message=foo'
(例如断帧的工作原理)。
相关文章:
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- 动态创建的iframe中的window.onerror在lne 0处给出脚本错误
- 是否可以添加<脚本>添加'_someTag'到iFrame中的URL
- 在Perl CGI脚本中捕获iframe返回值
- 如何检测何时执行 iframe 脚本
- 如何以编程方式将内容脚本添加到 iframe 文档
- 没有在带有IE-FF的IFrame中运行的脚本是可以的
- 如何使用java脚本将iframe的src设置为当前访问的站点
- 如何将数据从注入的内容脚本传递到iframe
- 插入<脚本>使用jQuery将其转换为iframe
- 如何使用jquery或vanillajavascript从iframe中获取两个脚本src
- 我想在Iframe Javascript PHP的帮助下,将单个ajax上传器脚本转换为多个上传器
- 当尝试登录instagram时,带有Selenium的Phantomjs不处理iframe Java脚本
- 如何访问iframe's来自用户脚本的javascript
- IFRAME和谷歌应用程序脚本中的NATIVE模式
- 实时在更改时重新加载iframe脚本
- IFRAME沙盒中的Google OAuth2和应用程序脚本
- 是否可以阻止远程脚本在 iframe 中加载
- 在iframe脚本中禁用超链接
- 显示来自另一个网页/ IFRAME脚本的内容