下面的代码仅在http://myurl.com/上显示<span>
,而在http://myurl.com/files/target.html上不显示<span>
,因此如何使它在具有指定域的所有页面上正常工作?请帮忙。
<script type="text/javascript">
var myurl = "http://myurl.com/";
var currenturl = window.location
if(myurl != currenturl) {
$("<span style=font-size:200px;>big</span>").replaceAll("body"); // check replaceWith() examples
}
</script>
最佳答案
您编写的内容无效,因为window.location返回Location对象,该对象是宿主对象。变量myurl是一个字符串。使用equals运算符比较字符串和对象时,会将字符串与调用对象的toString方法的结果进行比较。
宿主对象不一定具有toString方法,因此尝试调用它可能会引发错误。即使浏览器的location对象具有toString方法,它也可能返回一个字符串,该字符串是这些属性中的任何一个或其他属性的值。
碰巧的是,在大多数浏览器中,window.location.toString()将返回当前URL(在Moziall's Gecko DOM Reference中指定)。但是,myurl包含字符串http://myurl.com/,URL通常包含更多信息,例如正在显示的当前页面。
要匹配myurl,您需要协议(http :)分隔符(//),主机名(myurl.com)和结尾的“ /”字符,因此:
var loc = window.location;
myurl = loc.protocol + '//' + loc.hostname + '/';
或者,您可以设置myurl的格式以匹配location对象的属性之一,以使比较更加简单。
PS。 HTML5是在所有浏览器中标准化窗口对象的首次尝试,因此希望它在不同的浏览器中有所不同-进行防御性编程并进行广泛测试。
关于javascript - 如果指定的域不等于当前URL,则应用此jQuery以及具有相同域的页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7629640/