2010-12-17 75 views
2

我有一個框架,其中有一個Web應用程序。它期望某些JavaScript函數將存在於它可以調用的頁面上。我該如何將這些JavaScript函數從我的父應用程序注入到iframe中?將JavaScript插入到門戶應用程序的iframe中

+2

這不違反同源政策嗎? – Robert 2010-12-17 20:50:14

+0

@Robert但是如果兩個應用程序在同一個域上運行會怎樣?這不違反相同來源政策 - http://en.wikipedia.org/wiki/Same_origin_policy#Origin_determination_rules – 2010-12-17 23:42:40

回答

2

你的問題在細節上有點含糊,比如你是否控制iframe中的內容。但是有很多方法可以在框架之間訪問/應用Javascript。

在包含在iFrame中的頁面:

parent.FunctionName(); 

這將調用包含iframe的主頁面中存在的一個功能。

同理:

YourIFrameName.FunctionName(); 

將調用你的iframe從父功能。

您也可以將需要的Javascript函數打包到.js文件中。並將它們包含在任何需要頁面的頁眉(iframe和/或主頁面)中。

<head>包含此:

<script type="text/javascript" src="YourJavascriptFile.js"></script> 

但是,如果你不控制內容,並運行到同一產地的政策,你有兩個選擇:

1)重新考慮你的應用。

2)一個可行的混亂:你需要 呼叫從 做一些捲曲型魔法摳包括Web應用程序的 頁面內容的iframe的腳本, 注入所需的JavaScript,然後 輸出以有意義的方式修改內容。

如果你決定你需要走#2的路線,我可以編輯更多的細節。

+4

我最近在博客中關於#2的混亂,如果它有幫助:http://benjaminlanders.com/solving -the-同源策略/ – 2011-01-06 18:59:32

0

正如羅伯特所說,我認爲在大多數(如果不是全部的話)瀏覽器中違反了相同的出處政策。

或者,不是試圖將函數注入到iframe中,而是爲什麼沒有iframe內容直接從iframe的父項引用它們?

相關問題