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