假设有两个页面,a.html 和 b.html,都引用了 c.js,
其中 c.js 里面有两个函数,分别为 fun1 和 fun2。
此时,如果 a.html 需要在加载完成后执行 fun1, b.html 需要在加载完成后执行 fun2,
那么,如果不把加载后执行的动作写在页面里,而是写在共用的 c.js 里,应该如何写?
业精于勤,荒于嬉;行成于思,毁于随。
可以用 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; }
我觉得给 a,b页面的body 加上完全不同的id,然后在 c.js来判断body的id 最好了。这样子跟location不管,页面名字不管怎么变都行。
用location去判断
可以试一下用 seajs,requirejs 这类模块加载的工具,把两个函数写成不同的模块当中,然后再按需加载。
用 location 去判斷的問題在於,有時候,a.html 和 a.Html?query=A#fragment 都能訪問,在比如 a/ 和 a/index.html...
與其讓腳本自己考慮這些問題,不如爲每個頁面加上唯一標識符,比如 <body id="a.html">,省去了重複判斷的麻煩。
<body id="a.html">
可以用 window.location.href 判断,
也可以在 a.html b.html 分别定义一个变量,c.js 通过变量判断
a.html
b.html
c.js
我觉得给 a,b页面的body 加上完全不同的id,然后在 c.js来判断body的id 最好了。这样子跟location不管,页面名字不管怎么变都行。
用location去判断
可以试一下用 seajs,requirejs 这类模块加载的工具,把两个函数写成不同的模块当中,然后再按需加载。
用 location 去判斷的問題在於,有時候,a.html 和 a.Html?query=A#fragment 都能訪問,在比如 a/ 和 a/index.html...
與其讓腳本自己考慮這些問題,不如爲每個頁面加上唯一標識符,比如
<body id="a.html">
,省去了重複判斷的麻煩。