最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在瀏覽器中獲取當前執(zhí)行的腳本文件名的代碼

 更新時間:2011年07月19日 00:40:49   作者:  
同事提了一個問題,如何在瀏覽器中動態(tài)插入的 JavaScript 文件中,獲取當前文件名?
背景
同事提了一個問題,如何在瀏覽器中動態(tài)插入的 JavaScript 文件中,獲取當前文件名?

除了服務器輸出一個文件名外,在腳本中獲取應該只有下面三種做法。

解法A
普遍的解法,只能用于頁面靜態(tài)scripts標簽引入或者單個動態(tài)加載。
復制代碼 代碼如下:

var scripts = document.getElementsByTagName('script');
var filename = scripts[scripts.length -1].src;

動態(tài)插入多個腳本標簽的情況:
復制代碼 代碼如下:

loadScript('b.js?param=1')
loadScript('a.js?param=2')
loadScript('b.js?param=3')
loadScript('a.js?param=4')

/* 輸出
a.js >>> http://localhost:800/io/a.js?param=4
a.js >>> http://localhost:800/io/a.js?param=4
b.js >>> http://localhost:800/io/a.js?param=4
b.js >>> http://localhost:800/io/a.js?param=4
*/

解法B
變態(tài)型,只能工作于FireFox:
復制代碼 代碼如下:

try {
throw new Error();
}
catch(exception){
console.log( exception.fileName );
}

解法C
我的解法,操作源代碼:
復制代碼 代碼如下:

requireScript('a.js?'+Date.now(),function(text,src) {
console.log('text:',text);
globalEval('(function() { \nvar __filename = "'+ src +'";\n'+ text +'\n;})();');
})

瀏覽器輸出:
復制代碼 代碼如下:

<script>(function() {
var __filename = "a.js?1310971812334";
var scripts = document.getElementsByTagName('script');
console.log('a.js',' >>> ',scripts[scripts.length -1].src);
console.log(__filename);
;})();</script>

優(yōu)點:可靠、可緩存、可推遲執(zhí)行、可擴展。
限制:1)變量命名被約定為“__filename”;2)同源策略
又想到這個加載策略用來加載流行的 CoffeeScript,比如:

復制代碼 代碼如下:

requireScript('script.coffee',function(text,src) {
if( isCoffeeScript(src) )
globalEval( CoffeeScript.compile(text) );
})

鏈接

Cross-Origin Resource Sharing

Passing JavaScript arguments via the src attribute

CoffeeScript

查看或下載

https://gist.github.com/1088730

相關文章

最新評論

南投市| 泰宁县| 河曲县| 富裕县| 绍兴市| 桓台县| 舞阳县| 丹江口市| 醴陵市| 龙山县| 庄河市| 扎赉特旗| 葵青区| 汝阳县| 平顺县| 梁平县| 连江县| 吴江市| 汶川县| 扎鲁特旗| 济南市| 古交市| 平原县| 夏河县| 孟州市| 福海县| 建阳市| 长治县| 安义县| 彭州市| 新源县| 满城县| 富裕县| 庐江县| 岑溪市| 西贡区| 广平县| 特克斯县| 大化| 祥云县| 乌恰县|