为某些子页面设置 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";
   };
}