我有两页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 javascript传递值到ascx页面
- 5. 从aspx项目调用mvc页面
- 6. 从另一台PC调用aspx页面
- 7. 如何从sql server调用aspx页面?
- 8. 从PHP页面调用aspx文件
- 9. 从我的ASPX页面调用C#类
- 10. 从UpdatePanel里面调用父页面javascript iFrame
- 11. 如何从JavaScript和查询字符串调用aspx页面
- 12. 如何从aspx页面调用外部javascript函数?
- 13. 当使用Ajax调用aspx页面时,不调用Javascript函数
- 14. 如何在iframe标签内的HTML页面中调用.Aspx页面
- 15. 从两个不同的ASPX页面调用ASPX
- 16. 从另一个aspx调用aspx,html页面
- 17. 从iFrame调用主页面功能?
- 18. 如何将aspx.cs页面中的列表调用到.aspx页面?
- 19. 如何使用JavaScript将值从PopUpWindow传递到Aspx页面?
- 20. Dynamics 2011 ASPX IFRAME中的页面
- 21. 无法预览iframe aspx页面
- 22. 从父页面的iframe调用JavaScript中,IE问题
- 23. 如何将特定页面加载到iframe时调用javascript
- 24. JavaScript调用Aspx
- 25. 使用ASPX调用Web引用页面
- 26. 如何在加载.aspx页面时调整IFRAME的大小?
- 27. 从HTML页面传递用户名和密码到ASPX页面?
- 28. 带有iframe的.aspx页面中的ASPX页面抛出500.23错误
- 29. 如何在.aspx页面中调用.aspx页面中的书面函数
- 30. 如何使用javascript在div标记中调用.aspx页面?
显示您迄今为止完成的代码 –
您的意思是iFrame? – user1438038