我有两页a.aspx
和b.aspx
。 a.aspx
有一个Iframe
,我加载该Iframe
中的b.aspx
页面。是否可以拨打javascript
从b.aspx
到a.aspx
? 在此先感谢做到这一点从iframe调用javascript到aspx页面
1
A
回答
1
的一种方式,这也将涵盖您在IFrame中得到了外页和页面不同来源的场景(例如http://site1/a.aspx
和http://site2/b.aspx
)是使用postMessage
功能。
这有额外的好处,你“自己锁定在”以a.aspx
和b.aspx
之间的API合同,如果你有一个在b.apx
称为DoSomething
功能,正在从a.aspx
调用,如果你决定重新命名功能,您需要对两个页面(以及在IFrame中托管a.aspx
的任何其他页面)进行更改。如果您使用postMessage
方法,则唯一需要更改的地方是b.aspx
中的“消息”事件的侦听器。
如果你把a.aspx
下面的代码:
function sendMessageToEveryIFrame(message)
{
/// <summary>Call a function against all frames</summary>
var frames = document.getElementsByTagName('iframe');
for (var i = 0; i < frames.length; i++)
{
try
{
var frame = frames[i];
frame.contentWindow.postMessage(message, "*");
}
catch (e)
{
// Code to handle errors would go here!
}
}
}
然后,您可以通过其称之为(可能点击一个按钮用于测试目的):
sendMessageToEveryIFrame('Test message!');
然后你需要一些代码在b.aspx
中对消息进行反应,例如:
// This wires up your function that processes the message
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
// logic that reacts to the event/message goes here
alert(event.data);
}
当您在浏览器中按下a.aspx
中的按钮(或其他任何用于触发呼叫的按钮)时,b.aspx
应弹出一个包含文本“测试消息!”的警报窗口。
您的receiveMessage
功能可以发送请求,并有效地充当经纪人。所以,如果你有内部b.aspx
两个函数,你想打电话,你可以重新夹具的这样的代码:
在a.aspx
:
function callFrameFunction(functionName, parameters)
{
/// <summary>Call a function against all frames</summary>
var frames = document.getElementsByTagName('iframe');
for (var i = 0; i < frames.length; i++)
{
try
{
var frame = frames[i];
var message =
{
Function: function,
Parameters : parameters
};
frame.contentWindow.postMessage(message, "*");
}
catch (e)
{
// Code to handle errors would go here!
}
}
}
这意味着callFrameFunction
有两个参数的名称,函数和函数的参数。然后你会在b.aspx
更新代码,使其看起来更像是这样的:
// This wires up your function that processes the message
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
// logic that reacts to the event/message goes here
switch(event.data.FunctionName)
{
case "function 1":
alert('Function called was \'function 1\'');
break;
case "function 2":
alert('Function called was \'function 2\'');
break;
}
}
你可以调用你的函数替换调用alert
,传递值适当event.data.Parameters
。
1
假设您在b.aspx
中有以下javascript函数。
function DoSomething()
{
//Do you required tasks
}
而且您想在a.aspx
中调用此函数。如下所示,a.aspx
具有b.aspx
加载和iframe。
<iframe id="fraExample" name="fraExample" scrolling="no" src="b.aspx"></iframe>
这是你如何调用函数DoSomething的写在b.aspx
从写在a.aspx
function CallFunction()
{
// This function will be in a.aspx
// some tasks
var bFrame = document.getElementById('fraExample'); // Get the iframe
bFrame.contentWindow.DoSomething();
// some other tasks
}
功能这应该给你很好的和简单的工作!
相关问题
- 1. 从silverlight调用aspx页面
- 2. 从父aspx调用子iframe方法页
- 3. 使用iframe调用我的aspx页面到html页面,怎么做?
- 4. 从我的ASPX页面调用C#类
- 5. 从PHP页面调用aspx文件
- 6. 如何从sql server调用aspx页面?
- 7. 从aspx项目调用mvc页面
- 8. 无法预览iframe aspx页面
- 9. 从父页面的iframe调用JavaScript中,IE问题
- 10. JavaScript调用Aspx
- 11. 使用ASPX调用Web引用页面
- 12. 如何在加载.aspx页面时调整IFRAME的大小?
- 13. 带有iframe的.aspx页面中的ASPX页面抛出500.23错误
- 14. 如何在.aspx页面中调用.aspx页面中的书面函数
- 15. 如何使用javascript在div标记中调用.aspx页面?
- 16. 访问.aspx页面Ajax TabContainer从.aspx .ascx
- 17. 访问变量从页面后面的代码到aspx页面
- 18. 从iframe的调用者页面更改iframe内容css
- 19. 调用explore.exe与aspx页面的路径
- 20. Response.BinaryWrite调用ASPX页面两次
- 21. 将多个ID从第一个aspx页面存储到下一个aspx页面
- 22. 如何从aspx页面重定向到另一个aspx页面的方法
- 23. 如何从ASPX页面
- 24. 从aspx页面访问PageMethod
- 25. 从aspx页面下载PDF
- 26. 从aspx页面读取FileStream
- 27. 从ASPX页面生成PDF
- 28. 从winforms运行aspx页面
- 29. 找到一个aspx页面
- 30. 如何使用jquery ajax从脱机html调用aspx页面
显示您迄今为止完成的代码 –
您的意思是iFrame? – user1438038