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

Why can I only run 1 JavaScript internal function

本文关键字:JavaScript 内部函数 运行 为什么      更新时间:2023-09-26

我正在尝试从复杂的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);

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

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

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

只有我一个人,还是每个人都完全忽略了不是有效的JavaScript引号的要点?

请改用'"

并访问location.href而不仅仅是location.那也会有所帮助。

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

我知道window.location有一些属性叫做hosthostnamewindow.location.hostwindow.location.hostname。你应该尝试一下。

JavaScript 目前是单线程的,因此警报将阻止执行线程,直到命中 ok 然后它应该继续,htnl5 正在引入 Web worker 这有点酷,但有限......

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

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

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

取决于你想要实现的目标。

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

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

然而,还有另一种方法可以使这样的问题变得非常清晰;这是我的建议;它是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,右键单击屏幕并选择"检查元素"。

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

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

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

    • 看了一下,我看到的是一个错误: "URL 没有方法拆分"

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

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

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

希望有帮助。万事如意!纳什

试试这个:

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

它对我有用。它采用类似"http://example.com/"的内容并返回"示例"。(不带引号和句点。