1

我正在尝试从复杂的 url 中提取页面名称。这篇文章是我试图做到这一点的方式。现在我可以获取页面的 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);
4

7 回答 7

3

window.location不是字符串,它是一个Location对象,它没有方法split。但是,它确实有很多获取部分 URL 的方法,您可能希望查看这些方法,甚至可以执行您正在尝试做的事情:

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

如果一切都失败了,你可以使用.toString().split...

于 2012-06-11T20:48:02.247 回答
1
于 2012-06-11T20:51:07.457 回答
0

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

于 2012-06-11T20:47:30.310 回答
0

我知道有call或: orwindow.location的属性。你应该试试。hosthostnamewindow.location.hostwindow.location.hostname

于 2012-06-11T20:48:31.677 回答
0

JavaScript 目前是单线程的,因此警报将阻塞执行线程,直到 ok 被击中然后它应该继续,htnl5 正在引入 web 工作者,这很酷,但有限......

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

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

或者

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

取决于您要达到的目标。

于 2012-06-11T20:49:05.080 回答
0

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

我的意思是——很难从代码片段和警报中确定故障点在哪里。

但是,还有另一种方法可以使此类问题变得一目了然。这是我的建议;它是 JavaScript Step-Debugger。

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

在 Chrome 中进行 Step-Debugging 的说明: 1. 像这样添加 debugger 关键字,并注释掉您的警报:

//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,右键单击屏幕并选择“检查元素”。

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

    • 代码执行应该在您的调试器行暂停。
  3. 现在你能做的真的很强大。点击越过按钮,将带您逐行。

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

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

    • 这是有道理的,因为返回的对象不是字符串而是位置。

  5. 所以我所做的是查看 Location 的成员:host、hostname、href、origin、pathname...

  6. 我认为您需要根据需要拆分其中之一。

    • 例如:

      var url = window.location

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

      //这篇文章的url_parts是 //["http:", "", "stackoverflow.com", "questions", "10987267", "why-can-i-only-run-1-javascript-internal-function "]

希望有帮助。一切顺利!纳什

于 2012-06-11T21:05:15.253 回答
-1

尝试这个:

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

它对我有用。它接受“http://example.com/”之类的内容并返回“example”。(没有引号和句号。)

于 2012-06-11T20:55:27.447 回答