目前我依靠代理脚本来处理同源策略问题。这种方法速度慢,会增加开销。更不用说,JavaScript也无法渲染。
是否有其他可行的替代方案?
目前我依靠代理脚本来处理同源策略问题。这种方法速度慢,会增加开销。更不用说,JavaScript也无法渲染。
是否有其他可行的替代方案?
src
属性指向服务调用。否则,您就没办法了。使用iframe并尝试使用window.postMessage(message, origin)
(从iframe中是parent.postMessage
,从顶层页面是iframeElement.contentWindow.postMessage
)适用于所有最新的主流浏览器(Firefox,IE,Safari,Chrome等),对于旧浏览器则改变/轮询window.name
。
哦,亲爱的,我认为你正在寻找的解决方案是使用IFRAME。然而,IFRAME方法既需要思维上的努力,也需要技术上的努力。我建议你从这个指南开始:
另一种方法是使用脚本标签和JSON异步地从另一个服务器获取数据:
<script src="http://remotesite.com/path/to/script/blah.js"></script>
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;
}
(未经测试,但应该可行!)
无论如何 - 祝好运。
JSON-P 对于这种情况非常理想。如果你正在使用 jQuery 或类似的 JavaScript 库,那么你的工作会更加容易:
http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback
当然,使用哪种方案取决于你要完成什么任务,需要使用JSON-P、隐藏的iframe、postMessage、Flash代理或其他任何奇特的解决方案。