游猎及;Javascript-同源策略?
我有一个Javascript,它在链接中更改主机以匹配当前的开发/测试服务器 下面是一个例子:游猎及;Javascript-同源策略?,javascript,security,safari,Javascript,Security,Safari,我有一个Javascript,它在链接中更改主机以匹配当前的开发/测试服务器 下面是一个例子: var ndomain = document.domain; var mydomain = 'www.foo.com'; var alink = document.getElementsByTagName('a'); for (var i = 0; i < alink.length; i++) { if (alink[i].href.length > 0){ if
var ndomain = document.domain;
var mydomain = 'www.foo.com';
var alink = document.getElementsByTagName('a');
for (var i = 0; i < alink.length; i++) {
if (alink[i].href.length > 0){
if (alink[i].host.substr(0, mydomain.length) == mydomain){
alink[i].host = ndomain;
}
}
}
var ndomain=document.domain;
var mydomain='www.foo.com';
var alink=document.getElementsByTagName('a');
对于(变量i=0;i0){
if(alink[i].host.substr(0,mydomain.length)==mydomain){
alink[i].host=ndomain;
}
}
}
这将更改对的引用
除了Safari(Mac或Win)之外,我测试过的所有浏览器都可以使用它。我已经搜索了很多关于原因的信息,我找到的最接近的原因是“同一原产地政策”
根据我对同一原产地政策的理解,这应该有效,因为所有内容都在foo.com域下。Safari是否可以更严格地定义为两级子域(例如level1.test)
有人能告诉我为什么这个过程在Safari中不起作用,或者我如何让它在Safari中起作用吗
蒂亚 第5行出现语法错误(3个左括号,只有2个右括号)。这与同源策略无关 谷歌Chrome也可以看到同样的情况。两者都使用WebKit,因此WebKit DOM接口可能是解决问题的关键 在Chrome中运行问题中的JS不会改变链接中的主机。JS调试器和JS控制台都不会报告任何问题 尝试更改anchor.host属性的原因:
- 无需报告错误
- anchor.host属性没有更改
var ndomain=document.domain;
var mydomain='www.foo.com';
var alink=document.getElementsByTagName('a');
对于(变量i=0;i0){
if(alink[i].host.substr(0,mydomain.length)==mydomain){
var currentHref=alink[i].getAttribute('href');
var newHref='';
//根据currentHref生成newHref并根据需要设置主机
alink[i].setAttribute('href',newHref);
}
}
}
var ndomain = document.domain;
var mydomain = 'www.foo.com';
var alink = document.getElementsByTagName('a');
for (var i = 0; i < alink.length; i++) {
if (alink[i].href.length > 0){
if (alink[i].host.substr(0, mydomain.length) == mydomain){
var currentHref = alink[i].getAttribute('href');
var newHref = '';
// Generate newHref based on currentHref and setting host as required
alink[i].setAttribute('href', newHref);
}
}
}