首页 > 多页面引入同一 js 时,如何针对不同页面写加载后执行的代码?

多页面引入同一 js 时,如何针对不同页面写加载后执行的代码?

假设有两个页面,a.html 和 b.html,都引用了 c.js,

其中 c.js 里面有两个函数,分别为 fun1 和 fun2。

此时,如果 a.html 需要在加载完成后执行 fun1, b.html 需要在加载完成后执行 fun2,

那么,如果不把加载后执行的动作写在页面里,而是写在共用的 c.js 里,应该如何写?


用 location 去判斷的問題在於,有時候,a.html 和 a.Html?query=A#fragment 都能訪問,在比如 a/ 和 a/index.html...

與其讓腳本自己考慮這些問題,不如爲每個頁面加上唯一標識符,比如 <body id="a.html">,省去了重複判斷的麻煩。


用location去判断


可以试一下用 seajs,requirejs 这类模块加载的工具,把两个函数写成不同的模块当中,然后再按需加载。


我觉得给 a,b页面的body 加上完全不同的id,然后在 c.js来判断body的id 最好了。这样子跟location不管,页面名字不管怎么变都行。


可以用 window.location.href 判断,
也可以在 a.html b.html 分别定义一个变量,c.js 通过变量判断

a.html

ns.pageName = 'a'

b.html

ns.pageName = 'b'

c.js

switch(ns.pageName) {
  case 'a':
    // do something for a.html ...
    break;
  case 'b':
    // do something for b.html ...
    break;
}
【热门文章】
【热门文章】