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

为什么我只能运行1个JavaScript内部函数,javascript,sharepoint,Javascript,Sharepoint,我试图从复杂的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_pa

我试图从复杂的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.href。window.location是一个对象而不是字符串。
窗口。位置
不是字符串,它是一个
位置
对象,并且没有方法
拆分
。不过,它确实有很多方法可以获取URL的某些部分,您可能希望查看这些方法,甚至可以执行您尝试执行的操作:


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

我知道有
窗口的属性。位置
称为
主机
主机名
窗口.位置.主机
窗口.位置.主机名
。您应该尝试一下。

JavaScript目前是单线程的,因此警报将阻止执行线程,直到点击ok,然后它将继续,htnl5正在引入web workers,这有点酷,但有限

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

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


取决于您试图实现的目标。

是我自己还是每个人都完全忽略了
不是有效的JavaScript引号这一点

改用

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

试试以下方法:

extracturl = function()
{
    url1 = location.href;
    url2 = url1.split('.');
    url3 = url2[0].replace(/http:\/\//gi,'');
    return url3;
}
这对我有用。
它需要一些类似于“http://example.com/并返回“example”(不带引号和句点)。

问题在于您使用的是警报方法

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

然而,还有另一种方法可以使类似这样的问题变得非常清楚;这是我的建议;它是JavaScript步骤调试器

在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.
  • 使用网页上的Chrome,右键单击屏幕并选择“检查元素”

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

    • 代码执行应该在调试器行暂停
  • 现在你们所能做的是非常强大的。点击“跨过”按钮,将带你们一行一行地走

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

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

    • 这是有意义的,因为返回的对象不是字符串,而是位置

  • 所以我所做的就是看看Location的成员: 主机名、主机名、href、来源、路径名

  • 我想你需要根据你的需要分一个

    • 例如:

      var url=window.location

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

      //这篇文章的url\u部分是 //[“http:”、“”、“stackoverflow.com”、“疑问”、“10987267”、“为什么-can-i-only-run-1-javascript-internal-function”]

  • 希望有帮助。 祝你一切顺利!
    Nash

    确保使用真正的单引号或双引号。
    url.split(“/”
    url.split(“/”)
    请不要链接到W3Schools,而是MDC或其他更好的参考网站。这一点很好,但请看一下他的标题,并在他的代码中发表评论。我已经看了标题和代码,但我认为它们意味着JavaScript执行已停止。在这种情况下,这可能是由未捕获的异常引起的。问题不大可能是
     警报
    是同步的。好的捕获!\'可能完全停止了解释器。为什么不从
    位置.主机名开始呢?谢谢你提供的资源。我使用了window.location.pathname,现在将找到一种从中吸取页面名称的方法。
    
    //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.