如果指定的域名不等于当前URL,则应用此jQuery以及具有相同域名的页面



下面的代码只显示了http://example.com/上的<span>,但不会显示http://example.com/files/target.html上的<span>,所以我怎么能让它在指定域的所有页面上工作?请帮助。

<script type="text/javascript">
var myurl = "http://example.com/";
var currenturl = window.location
if(myurl != currenturl) {
$("<span style=font-size:200px;>big</span>").replaceAll("body"); // check replaceWith() examples
}
</script>

应该可以:

<script type="text/javascript">
    var myurl = "www.myurl.com";
    var currenturl = window.location.hostname;
    if(myurl != currenturl) {
        $("<span style=font-size:200px;>big</span>").replaceAll("body"); // check replaceWith() examples
    }
</script>

Per MDN Docs: https://developer.mozilla.org/en/window.location

你写的东西不起作用,因为窗口。location返回一个location对象,它是一个主机对象。变量myurl是字符串。当使用equals操作符比较字符串和对象时,将字符串与调用对象的toString方法的结果进行比较。

Host对象不一定有toString方法,因此尝试调用它可能会抛出错误。即使浏览器的location对象有toString方法,它也可以返回一个字符串,该字符串是这些属性中的任何一个的值,或者其他的值。

事实上,在大多数浏览器中window.location.toString()将返回当前URL(在mozilla的Gecko DOM Reference中指定)。但是,myurl包含字符串http://myurl.com/, URL通常包含更多信息,例如当前显示的页面。

要匹配myurl,您需要协议(http:)分隔符(//)、主机名(myurl.com)和后面的"/"字符,因此:

var loc = window.location;
myurl = loc.protocol + '//' + loc.hostname + '/';

或者您可以格式化myurl以匹配location对象的一个属性,从而使比较更简单。

p。HTML5是跨浏览器标准化窗口对象的第一次尝试,所以它在不同的浏览器中会有所不同——防御性编程和广泛测试。

最新更新