为什么我只能运行1个JavaScript内部函数
我试图从复杂的url中提取页面名称。这就是我试图这样做的方式。现在我可以获取页面的url,但一旦我尝试使用它做任何事情,它就会失败。我正在SharePoint页面中使用此选项为什么我只能运行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
//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.
- 这将打开开发工具,使调试器停止
- 代码执行应该在调试器行暂停
- 现在您可以将鼠标悬停在变量上,查看状态是什么
- 我看了一下,我看到的是一个错误: “url没有方法拆分”
- 这是有意义的,因为返回的对象不是字符串,而是位置
- 例如: 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.