为某些子页面设置 onbeforeunload 触发
make onbeforeunload fire for certain subpages
我对 javascript 很陌生。我有一个简单的 onbeforeunload 函数,目前适用于所有页面,我希望它为某些子页面(#clients、#products、#news)激活,但不适用于我域的第一个子页面(index.html) .我想避免将脚本放在每个子页面中,而是想在 onbeforeunload 函数触发之前使用条件语句来检测子页面的名称。我当前的代码如下:
window.onbeforeunload = function(event) {
event.returnValue = "You have unsaved work";
};
我知道我需要以某种方式使用 window.location.href,但还没有弄清楚。我尝试使用下面的代码获取 url 或每个站点,然后想将其输入到 case 语句中,返回了 url 但 case 中的代码不起作用:
document.getElementById("demo").innerHTML =
"Page location is " + window.location.href;
案例代码:
<script>
var text;
switch (window.location.href) {
case "http://mydomain/#/clients":
text = 1;
break;
case "http://mydomain/#/products/":
text = 2;
break;
case "http://mydomain/#/news":
text = 3;
break;
default
text = 4;
break;
}
document.getElementById("demo").innerHTML = "Number is " + text;
</script>
谢谢
"window.location.href" returns整个URL
,改用location.pathname
。另外,确保将路径名(包括扩展名)添加到 pathsToAddTheScript
数组。
试试这个。
var pathsToAddTheScript = ['clients', 'products'];
if(window.location.pathname in pathsToAddTheScript) {
window.onbeforeunload = function(event) {
event.returnValue = "You have unsaved work";
};
}
我对 javascript 很陌生。我有一个简单的 onbeforeunload 函数,目前适用于所有页面,我希望它为某些子页面(#clients、#products、#news)激活,但不适用于我域的第一个子页面(index.html) .我想避免将脚本放在每个子页面中,而是想在 onbeforeunload 函数触发之前使用条件语句来检测子页面的名称。我当前的代码如下:
window.onbeforeunload = function(event) {
event.returnValue = "You have unsaved work";
};
我知道我需要以某种方式使用 window.location.href,但还没有弄清楚。我尝试使用下面的代码获取 url 或每个站点,然后想将其输入到 case 语句中,返回了 url 但 case 中的代码不起作用:
document.getElementById("demo").innerHTML =
"Page location is " + window.location.href;
案例代码:
<script>
var text;
switch (window.location.href) {
case "http://mydomain/#/clients":
text = 1;
break;
case "http://mydomain/#/products/":
text = 2;
break;
case "http://mydomain/#/news":
text = 3;
break;
default
text = 4;
break;
}
document.getElementById("demo").innerHTML = "Number is " + text;
</script>
谢谢
"window.location.href" returns整个URL
,改用location.pathname
。另外,确保将路径名(包括扩展名)添加到 pathsToAddTheScript
数组。
试试这个。
var pathsToAddTheScript = ['clients', 'products'];
if(window.location.pathname in pathsToAddTheScript) {
window.onbeforeunload = function(event) {
event.returnValue = "You have unsaved work";
};
}