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

时间:2011-10-02 22:25:43

标签: javascript jquery url javascript-events if-statement

以下代码仅显示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>

2 个答案:

答案 0 :(得分:3)

这应该有效:

<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>

每个MDN文档:https://developer.mozilla.org/en/window.location

答案 1 :(得分:2)

你写的内容不起作用,因为 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是第一次跨浏览器标准化窗口对象的尝试,所以期望它在不同的浏览器程序中有所不同 - 防御性和广泛测试。