js获取引用js的文件路径

zpjshiwo77 2015-10-23 10:02:18
昨天用jslang大神的方法var path = $("script").eq(-1).attr("src").replace(/[^\/]+$/,""); 没有成功。
具体情况是这样的:我做的插件,框架是总监写的,分同步调用和异步调用(这些我不太懂,我只负责填充内容)。然后在同步调用下,我打印出var path = $("script").eq(-1)src是空的,异步调用下src是图片那样的。

之后试过网上的方法,还是不行l
var scripts = document.getElementsByTagName('script')//获所有script标签
, script = scripts[scripts.length - 1]//获取当前加载到的script标签
//如果是ID,src=document.getElementById('script的Id').src
, src = script.src//获取当前加载到的script标签的src属性


不知道还有什么好方法,或者说是我用错了?
...全文
679 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zpjshiwo77 2015-10-26
  • 打赏
  • 举报
回复
引用 10 楼 jslang 的回复:
或者你可以遍历所有的 script标签的src,逐个用正则判断哪个是当前js文件的
最后用这种方法解决了,谢谢!
zpjshiwo77 2015-10-23
  • 打赏
  • 举报
回复
引用 2 楼 showbo 的回复:
你的同步异步是什么意思?是用ajax加载的还是script标签加载?

script加载你贴的最后的代码放在js文件里面,html页面引入这个js时肯定可以获取到此script的src的

ajax动态就不一定了。。

具体是这样的
zpjshiwo77 2015-10-23
  • 打赏
  • 举报
回复
引用 1 楼 slwsss 的回复:
var scripts = document.getElementsByTagName('script')//获所有script标签 script = scripts[scripts.length - 1] 直接写在js文件里没问题
得到的结果和前面jquery方法是一样的,一个是空一个是http://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.20/require.min.js
Go 旅城通票 2015-10-23
  • 打赏
  • 举报
回复
你的同步异步是什么意思?是用ajax加载的还是script标签加载? script加载你贴的最后的代码放在js文件里面,html页面引入这个js时肯定可以获取到此script的src的 ajax动态就不一定了。。
slwsss 2015-10-23
  • 打赏
  • 举报
回复
var scripts = document.getElementsByTagName('script')//获所有script标签 script = scripts[scripts.length - 1] 直接写在js文件里没问题
天际的海浪 2015-10-23
  • 打赏
  • 举报
回复
或者你可以遍历所有的 script标签的src,逐个用正则判断哪个是当前js文件的
zpjshiwo77 2015-10-23
  • 打赏
  • 举报
回复
引用 8 楼 jslang 的回复:
这样,换个方法 你用框架加载js,那js的文件路径就可以在加载前获取到啊 可以先把文件路径放到一个全局对象中,在这个js文件中直接从全局对象上获取就行了
非常感谢,但我还是有一点不太理解。加载前获取到的方法是什么? 因为我写的是一个插件,js的文件路径应该是用户定的吧,例如我规定路径是static/dialog/dialog.js。如果别人吧static文件夹放在js文件夹下面,那么路径就变成了js/static/dialog/dialog.js。异步我想的是看看requirejs有什么方法解决,但现在是同步的情况下用您的方法,取到的值有问题。 (请原谅我技术水平有限,因为是第一次写插件,框架还是别人写的,所有还需要多学习) 然后,非常感谢您的回答,我再好好想一想,试一试。感觉应该不是方法有问题,可以其中涉及到的东西,我不太了解,可能影响到了什么。
天际的海浪 2015-10-23
  • 打赏
  • 举报
回复
这样,换个方法 你用框架加载js,那js的文件路径就可以在加载前获取到啊 可以先把文件路径放到一个全局对象中,在这个js文件中直接从全局对象上获取就行了
天际的海浪 2015-10-23
  • 打赏
  • 举报
回复
用框架加载js是比较麻烦,能不能用我那个方法要看框架把script标签插入到哪里。 如果框架把script标签插入到body的最后就没有问题。 如果是插入到head中就不行了。这就不是最后一个script标签了。
Go 旅城通票 2015-10-23
  • 打赏
  • 举报
回复
你获取script的src代码是哪个?异步的是用require类库加载的 自己看下API:http://www.requirejs.cn/
香蕉猪 2015-10-23
  • 打赏
  • 举报
回复
异步在ajax尚未执行完毕,,就已经执行之后的代码了。。。所以src中没有数据是对的。。。

87,954

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧