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

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

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

除了服務(wù)器輸出一個(gè)文件名外,在腳本中獲取應(yīng)該只有下面三種做法。

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

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

動(dòng)態(tài)插入多個(gè)腳本標(biāo)簽的情況:
復(fù)制代碼 代碼如下:

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:
復(fù)制代碼 代碼如下:

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

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

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

瀏覽器輸出:
復(fù)制代碼 代碼如下:

<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)點(diǎn):可靠、可緩存、可推遲執(zhí)行、可擴(kuò)展。
限制:1)變量命名被約定為“__filename”;2)同源策略。
又想到這個(gè)加載策略用來加載流行的 CoffeeScript,比如:

復(fù)制代碼 代碼如下:

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

相關(guān)文章

最新評論

巩留县| 贞丰县| 秦皇岛市| 淅川县| 拜城县| 休宁县| 自贡市| 迭部县| 拜泉县| 枞阳县| 胶州市| 九龙县| 古浪县| 台南市| 塘沽区| 额济纳旗| 双鸭山市| 长白| 承德市| 中西区| 连平县| 香格里拉县| 德钦县| 南澳县| 张家口市| 沙坪坝区| 横峰县| 海林市| 图木舒克市| 呼图壁县| 灌云县| 望谟县| 磴口县| 榆林市| 于都县| 神池县| 樟树市| 武宣县| 安达市| 驻马店市| 鄂托克旗|