为什么我只能运行1个JavaScript内部函数

时间:2012-06-11 20:44:02

标签: javascript sharepoint

我正在尝试从复杂的网址中提取网页名称。 This post是我尝试这样做的方式。现在我能够获取页面的URL但是一旦我尝试用它做任何事情就失败了。我在SharePoint页面中使用它。

//WORKS!
var url = window.location;
alert(url);

//ALERTS NOTHING 
//PREVENTS ALL JAVASCRIPT AFTER THIS FROM RUNNING AS WELL
var url = window.location;
var url_parts = url.split(‘/’);
var main_url = url_parts[0];
alert(main_url);

7 个答案:

答案 0 :(得分:3)

window.location不是字符串,它是Location对象,没有方法split。但是,它确实有很多方法可以获取URL的部分内容,您可能希望看到它甚至可以执行您尝试执行的操作:

https://developer.mozilla.org/en/DOM/window.location

如果其他所有方法都失败了,您可以使用.toString().split ...

答案 1 :(得分:1)

只是我或者每个人都完全忽略了不是有效的JavaScript报价的观点吗?

改为使用'"

访问location.href而非location。这也有帮助。

答案 2 :(得分:0)

尝试使用window.location.href。 window.location是一个对象而不是一个字符串。 http://www.w3schools.com/jsref/obj_location.asp

答案 3 :(得分:0)

我知道名为window.locationhost的{​​{1}}属性:hostnamewindow.location.host。你应该尝试一下。

答案 4 :(得分:0)

JavaScript目前是单线程的,因此警报将阻止执行线程,直到确定被击中然后它应该继续,htnl5引入的Web工作人员很酷,但有限......

回到你的问题,你可能想要这样做。

window.location.href.split("/")

window.location.pathname.split("/")

取决于你想要达到的目标。

答案 5 :(得分:0)

问题是您正在使用警报方法。

我的意思是 - 很难从代码片段和警报中确定失败点的位置。

然而,还有另一种方法可以解决这样的问题;这是我的建议;它是JavaScript Step-Debugger。

在Chrome或FireFox中,可以逐步执行代码行并检查每行的值,以确定它是否符合您的预期。

Chrome中的步骤调试说明: 1.像这样添加调试器关键字,并注释掉你的警报:

//WORKS!
debugger;
var url = window.location;
//alert(url);

- This will instruct the debugger to pause runtime execution, so that we can see how each line executes.
  1. 在网页上使用Chrome,右键单击屏幕并选择“检查元素”。

    • 这将打开Dev Tools,以便调试器停止。
  2. 刷新页面,调用执行代码可能需要的任何事件。

    • 代码执行应在调试器行暂停。
  3. 现在你能做的真的很棒。点击步骤按钮,将逐行带您。

    • 现在,您可以将鼠标悬停在变量上以查看状态是什么。
  4. 我怀疑url.split()在某种程度上可能是错误的。

    • 我看了看,我看到的是一个错误:     “url没有方法拆分”

    • 这是有道理的,因为返回的对象不是String而是Location。

  5. 所以我所做的就是看一下Location的成员:       主机,主机名,href,来源,路径名......

  6. 我认为您需要根据自己的需要拆分其中一个。

    • 例如:

      var url = window.location

      var url_parts = url.href.split('/');

      这篇文章的 // url_parts是 // [“http:”,“”,“stackoverflow.com”,“问题”,“10987267”,“为什么只能运行1-javascript-internal-function”]

      < / LI>
  7. 希望有所帮助。 祝一切顺利! 纳什

答案 6 :(得分:-1)

试试这个:

extracturl = function()
{
    url1 = location.href;
    url2 = url1.split('.');
    url3 = url2[0].replace(/http:\/\//gi,'');
    return url3;
}

它对我有用。 它需要“http://example.com/”之类的东西并返回“示例”。 (没有引号和句号。)