为什么我不能在window.location上搜索?

时间:2013-04-07 13:39:37

标签: javascript

我需要检查位置是否与某些文字类似。所以我的代码如下:

        //are we already on the same form
        var loc = window.top.window.location;
        if(loc)
           window.alert("loc=" + loc);

        if(loc && loc.search(form, "i") != -1)
        {

        }

window.top.window看起来有点奇怪 - 它被使用是因为窗口可能不是最顶层的,我需要获得最顶层的实例。

我确实得到了一个loc实例 - 所以它不是null。但搜索有效吗?

但如果我运行此代码,我会收到一个javascript运行时错误:

Caught exception: Object doesn't support this action

为什么我会遇到这个问题?

如果我无法搜索如何使用位置比较字符串?

修改

令我感到困惑的是,该位置确实具有只读属性搜索,即HTTP GET命令。

我在想我正在对字符串进行搜索 - 而是试图写入只读属性。

2 个答案:

答案 0 :(得分:2)

尝试:

      window.top.window.location.href

您只能提醒字符串。 window.location变量是一个对象,具有href属性,什么是字符串。 请参阅文档:http://www.w3schools.com/jsref/obj_location.asp

如果您想查看位置对象内的内容:

     console.log(window.top.window.location);

这将打印出这样的内容(在chrome中):

    Location
      -ancestorOrigins: DOMStringList
      -assign: function () { [native code] }
      -hash: ""
      -host: "stackoverflow.com"
      -hostname: "stackoverflow.com"
      -href: "http://stackoverflow.com/posts/15863038/edit"
      -origin: "http://stackoverflow.com"
      -pathname: "/posts/15863038/edit"
      -port: ""
      -protocol: "http:"
      -reload: function () { [native code] }
      -replace: function () { [native code] }
      -search: ""
      -toString: function toString() { [native code] }
      -valueOf: function valueOf() { [native code] }
      -__proto__: Location
            ...

答案 1 :(得分:1)

您需要使用window.top.window.location.hrefwindow.top.window.location是一个不是字符串的对象。

    //are we already on the same form
    var loc = window.top.window.location.href;
    if(loc)
       window.alert("loc=" + loc);

    if(loc && loc.search(form, "i") != -1)
    {

    }

image