gpt4 book ai didi

javascript - 获取动态加载的跨域 JavaScript 文件当前执行的 JavaScript 代码的文件路径

转载 作者:搜寻专家 更新时间:2023-11-01 04:18:46 27 4
gpt4 key购买 nike

我需要加载跨域JavaScript
我网站中书签的动态文件http://jsbookmarklets.com/


解应满足:

  • 获取当前文件的路径
  • 当前网页和正在执行的JS文件的域不同
  • 解决方案应该是跨浏览器
  • 多个脚本可能一次异步加载(这就是为什么下面提到的相关问题不合适)


我想获取当前执行的 JavaScript 代码的文件路径,以动态加载更多资源(更多 CSS 文件和 JS 文件,如自定义代码和 jQuery、jQuery UI 和 Ext JS 库)存储在与 JavaScript Bookmarklet 相同/相对的文件夹。


以下方法不适合我的问题:

var scripts = document.getElementsByTagName("script");
var src = scripts[scripts.length-1].src;
alert("THIS IS: "+src);


不符合我问题的相关问题:

最佳答案

我正在使用的当前解决方案有效,但非常冗长:

var fnFullFilePathToFileParentPath = function(JSFullFilePath){
var JSFileParentPath = '';
if(JSFullFilePath) {
JSFileParentPath = JSFullFilePath.substring(0,JSFullFilePath.lastIndexOf('/')+1);
} else {
JSFileParentPath = null;
}
return JSFileParentPath;
};

var fnExceptionToFullFilePath = function(e){
var JSFullFilePath = '';

if(e.fileName) { // firefox
JSFullFilePath = e.fileName;
} else if (e.stacktrace) { // opera
var tempStackTrace = e.stacktrace;
tempStackTrace = tempStackTrace.substr(tempStackTrace.indexOf('http'));
tempStackTrace = tempStackTrace.substr(0,tempStackTrace.indexOf('Dummy Exception'));
tempStackTrace = tempStackTrace.substr(0,tempStackTrace.lastIndexOf(':'));
JSFullFilePath = tempStackTrace;
} else if (e.stack) { // firefox, opera, chrome
(function(){
var str = e.stack;
var tempStr = str;

var strProtocolSeparator = '://';
var idxProtocolSeparator = tempStr.indexOf(strProtocolSeparator)+strProtocolSeparator.length;

var tempStr = tempStr.substr(idxProtocolSeparator);
if(tempStr.charAt(0)=='/') {
tempStr = tempStr.substr(1);
idxProtocolSeparator++;
}

var idxHostSeparator = tempStr.indexOf('/');
tempStr = tempStr.substr(tempStr.indexOf('/'));

var idxFileNameEndSeparator = tempStr.indexOf(':');
var finalStr = (str.substr(0,idxProtocolSeparator + idxHostSeparator + idxFileNameEndSeparator));
finalStr = finalStr.substr(finalStr.indexOf('http'));
JSFullFilePath = finalStr;
}());
} else { // internet explorer
JSFullFilePath = null;
}

return JSFullFilePath;
};

var fnExceptionToFileParentPath = function(e){
return fnFullFilePathToFileParentPath(fnExceptionToFullFilePath(e));
};

var fnGetJSFileParentPath = function() {
try {
throw new Error('Dummy Exception');
} catch (e) {
return fnExceptionToFileParentPath(e);
}
};

var JSFileParentPath = fnGetJSFileParentPath();
alert('File parent path: ' + JSFileParentPath);

关于javascript - 获取动态加载的跨域 JavaScript 文件当前执行的 JavaScript 代码的文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14110756/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com