Osc*_*son 4 javascript security api xss google-maps-api-3
经过一个多小时试图让它工作,我认为这是因为跨域策略,但我真的认为这会起作用.我也找不到很多关于它的信息.但是,这是我的问题.我有一个名为http://mysite.com的网站,然后我在http://supercoolsite.com/api/script.js中包含了第三方脚本(我正在写的)和它的脚本需要动态加载谷歌在运行之前映射api:http://maps.google.com/maps/api/js? send = false.好吧,我认为这段代码可行:
function loadScript(filename,callback){
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", filename);
fileref.onload = callback();
if (typeof fileref!="undefined"){
document.getElementsByTagName("head")[0].appendChild(fileref)
}
}
loadScript('http://maps.google.com/maps/api/js?sensor=false',function(){
console.log('done loading');
init();
});
Run Code Online (Sandbox Code Playgroud)
但我在我的控制台中的回答是:
api.js:408 done loading
api.js:115 test
api.js:310 Uncaught ReferenceError: google is not defined
Run Code Online (Sandbox Code Playgroud)
" test"是最重要的init().所以,它正在加载脚本,但它似乎没有执行它.那么,有什么想法吗?如果它是一个跨站点脚本问题,我唯一能解决这个问题的方法就是在我们的结尾处有一个PHP脚本,基本上只是将标题设置为text/javascript标题然后echo file_get_contents()放入googlemaps.php我们托管的文件中.在我们发言时即将尝试这一点,但是,如果可能的话,用纯JS来做这件事的方法会非常棒.
PS我也尝试添加jQuery,然后做getScript(),它仍然没有工作
- 更新 -
看到这个小提琴:http: //jsfiddle.net/ycMCa/2/
您将看到在控制台中出现错误:
Uncaught TypeError: undefined is not a function
尽管google变量是全球性的.
你只是有一个小错误:
fileref.onload = callback();
Run Code Online (Sandbox Code Playgroud)
这将callback立即调用并将其返回值赋值给fileref.onload.
它应该是
fileref.onload = callback;
Run Code Online (Sandbox Code Playgroud)
您还应该在设置源之前添加处理程序(以防万一).
| 归档时间: |
|
| 查看次数: |
2629 次 |
| 最近记录: |