我正在使用Google Maps API编写JavaScript代码.
map = new google.maps.Map2(document.getElementById("map_canvas"));
map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13);
Run Code Online (Sandbox Code Playgroud)
上面的代码将地图画布的默认位置设置为Palo Alto.
我们如何编写脚本以使setCenter功能自动指向客户端的当前位置?
我们有一个基于.net的应用程序,托管有SAP企业门户网站iframe.SAP门户的域名是al.xx.companyname.com..Net应用程序服务器的域是ss.xx.companyname.com.
现在,当我通过企业门户打开应用程序时,我收到了"权限被拒绝"的JavaScript错误.我在IE中启用了脚本调试,然后将Visual Studio调试器附加到JavaScript错误.我注意到从以下JavaScript代码中抛出错误来设置/重置脏标志.
if(top.EPCM!=null)
Run Code Online (Sandbox Code Playgroud)
可以理解的是,该问题是由跨域脚本编写引起的.即ss.xx.companyname.com的应用服务器正在尝试访问域al.xx.companyname.com的企业门户的浏览器组件.
但是,这个交叉脚本是一个受信任的域脚本,我想以某种方式允许这种交叉脚本.我试图设置应用程序服务器的主DNS后缀.按照以下方法.
现在,在上述设置之后,我假设企业门户和应用服务器的域都将被视为al.xx.companyname.com.但是,我仍然在上面提到的相同JavaScript代码中获得JavaScript权限被拒绝错误.
正如回复中所建议的,我还实现了document.domain方法.
var requireddomain = 'al.xx.companyname.com';
var text = document.domain; //returns the domain as ss.xx.companyname.com
if (text != requireddomain)
{
for (i=0; i < 2; i++)
{
dotposition = text.indexOf( "." );
text = text.substr(dotposition +1);
}
document.domain = text;
}
if(top.EPCM!=null)
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,document.domain对象设置为companyname.com,这对于企业门户和应用程序服务器都是通用的.但是仍然会在行中>> if(top.EPCM!= null)中抛出权限被拒绝的问题
过去3天这个问题让我头疼.有人可以帮我这个吗?目标是允许应用程序服务器和作为可信连接的企业门户之间的跨域脚本.谢谢.
更新:
有趣和令人沮丧的发展.我在应用服务器中安装了ssl证书.仍然会抛出权限被拒绝错误.
我试图将document.domain属性设置为2个子级别,即到companyname.com.
但仍然会发生'允许拒绝错误'.
我想,document.domain的设置仅在app域是门户域的子集时才有效.即
在上面的例子中,我可以将app域减少到一个sublevel down(到al.xx.companyname.com).然后我想,它会起作用.
但是在我的情况下,门户网站和应用服务器是同一companyname.com的2个分支子域,因此仍然不允许交叉脚本.
有关如何进行的任何建议?
我已经看到这两个代码在 python 中可以互换使用。
Import module
Run Code Online (Sandbox Code Playgroud)
或者
From module import *
Run Code Online (Sandbox Code Playgroud)
以上2个代码有什么区别?它意味着什么?编码效率方面的最佳实践是什么?