回答
哦,親愛的,我認爲你要找的解決方案是使用IFRAME。然而,iframe方法既是精神上的,也是技術性的。我建議你開始與本指南:
Cross-Domain Communication with IFrames
解決的辦法是異步使用腳本標記和JSON從另一臺服務器獲取數據:
<script src="http://remotesite.com/path/to/script/blah.js"></script>
您可以創建一個新的腳本元素傳遞並加載數據並附加到DOM或將標記插入到元素innerHTML中。
我確定你可以找到一些詳細的例子和實現方法,但是你應該跟着新的SCRIPT方法跟蹤一件事,那就是添加很多DOM。這可能會幫助併爲您提供了一個起點:
function require (url, callback) {
if (!isScriptLoaded(url)) {
document.write('<script src="' + url + '" type="text/javascript" charset="utf-8"><\/script>');
if (callback) {
callback();
}
}
}
function isScriptLoaded(src) {
var scriptsLoaded = {};
var scriptTags = document.getElementsByTagName("script");
for (var i = 0, script; script = scriptTags[i]; i++) {
if (script.src) {
scriptsLoaded[script.src] = 1;
}
};
if (scriptsLoaded[src]) {
return true;
}
return false;
}
無論哪種方式 - 好運(未經測試,但應該工作!)。
如果您可以提供回調名稱作爲提供相關JavaScript代碼的服務的參數,那麼您可以在文檔中附加腳本標記,並指定src
屬性指向服務調用。否則,你運氣不好。
這通常被稱爲JSONP或帶填充符的JSON甚至更進一步:帶有填充符的JavaScript對象符號。 :) – 2009-10-24 20:34:39
請注意,在Internet Explorer中,大型腳本可能會導致內存泄漏,但在刪除腳本標記後不會釋放大量內存使用。如果您在每個網頁瀏覽中只撥打1或2個電話,則這不是主要問題,但如果您希望網頁保持打開狀態並長時間撥打電話,則可能需要使用極慢電腦的用戶投訴:) – 2009-10-24 20:35:20
JSON-P非常適合這種事情。這將取決於你正在嘗試做的是什麼,將決定是否使用JSON-
http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback
當然,如果你使用jQuery或類似的JavaScript庫,你的工作是由更容易P,隱藏的iframe,postMessage,Flash代理或任何其他奇特的解決方案。
使用iframe和嘗試window.postMessage(message, origin)
(這將是從首頁的iframe和iframeElement.contentWindow.postMessage
parent.postMessage
)所有的最新主要瀏覽器(Firefox,IE,Safari瀏覽器,瀏覽器等)和改變/輪詢window.name
爲舊的瀏覽器。
如果您控制兩個域並只關心Firefox 3.5+,則可以使用XMLHttpRequest對象並使用Access Control設置權限。
- 1. 替代跨應用
- 2. Mootools跨域,YQL代理
- 3. 跨域沒有php代理
- 4. 跨瀏覽器替代document.body.innerHTML
- 5. py2exe的跨平臺替代
- 6. 跨域JavaScript代碼兄弟子域
- 7. 獲取跨域URL的iFrame替代方案
- 8. 跨域iframe剪裁/ div隱藏?或者 - 替代?
- 9. htaccess的替代域
- 10. 是否有一個可以跨子域使用的現代sessionStorage替代方案?
- 11. 什麼是跨域請求/跨域攻擊/跨域協議
- 12. 跨域
- 13. nodejs中的域的替代
- 14. XMLhttprequest中的替代域?
- 15. 的Perl -e領域替代
- 16. 替代iframe(相同域名)
- 17. 替代文字區域?
- 18. Ajax跨域域庫
- 19. 使用JavaScript跨域REST代理,HTML5
- 20. javascript跨域沒有jsonp和代理
- 21. 使用PHP代理跨域訪問
- 22. 帶有Backbone的PHP跨域(AJAX)代理
- 23. Ajax跨域Php代理403錯誤
- 24. 如何從跨域獲取HTML代碼?
- 25. three.js(canvas/webGL)的跨域圖像,代理?
- 26. 的HTTP代碼拒絕跨域訪問
- 27. 如何跨多個域重用代碼?
- 28. 通過使用代理跨AJAX域
- 29. 跨瀏覽器替代Webkit/Html通知
- 30. $ _SESSION替代工作跨設備
是的。 iframe加載外部頁面,並且需要在其上運行一些JavaScript。然而,由於單一原始政策,這是不允許的。因此,依靠代理不是最優的或有效的。 – dooli 2009-10-24 21:25:37
可悲的是,沒有具體細節,我無法適當回覆這個問題。在我看來,這不是問題,但我的解決方案工作取決於您的後端設置等。 要按照您的意見: - iframe加載外部頁面 - iframe URL可以包含params來指示JS回調和參數 - 本地iframe JS解釋這一點,並繼續 顯然這不會工作,如果你正在談論一些動態的JS或許多值被傳遞... 我的印象是,這不會幫助你,因爲你有更深的需要但它可能會幫助其他人。 – donohoe 2009-10-25 00:04:16