我有兩頁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