1
pine OP |
2
codespots 2016-03-31 15:35:11 +08:00
源码还是用 script 标签
|
3
shiny 2016-03-31 15:41:40 +08:00
你看的是不是跨域 json CORS?
|
4
CosWind 2016-03-31 17:31:18 +08:00
callback 只想完毕,会自动从 window 上删除, script 标签也是
|
5
xieranmaya 2016-03-31 17:36:01 +08:00
去年遇到过一个问题专门分析过这段代码,如果我没记错,JSONP 内部调的是 getScript,getScript 内部又调了$.ajax,然后 getScript 这个函数里面进行了一些判断,会尝试能否把 js 用 xhr 请求下来,如果能请求下来,拿到源代码,跟据是否有'use script'模式选择 eval 还是插入 script 标签,总之判断条件比较复杂,但是可靠性非常高.
说一下我当时遇到的情况,我用 jQuery 加载 html 片段直接到页面上面,然后这个 html 片段里面有 script:src 标签,jQuery 为了保证可用性是会运行 script 里引用的这个里面的 js 文件的,而且还能保证运行顺序!运行方式就是我上面说的这样,所以猜测你可能也遇到了相同或者类似的情况 |
6
CosWind 2016-03-31 17:36:17 +08:00
看这个文件, script 的操作在这里面
https://github.com/jquery/jquery/blob/master/src/ajax/script.js |
7
CosWind 2016-03-31 17:58:15 +08:00
所以 jquery 的 jsonp 并没有使用神奇的“新技术”,只是闭包把你绕晕了
|
8
pine OP 对不起了各位,我测试的时候的的确没有跨域,可能就像 xieranmaya 说的,虽然用了 jsonp ,但没有跨域所以走的还是 xhr 。感谢 @xieranmaya @shiny
@westooy 感谢 @CosWind 感谢,看了你说的源码,我自己又测试一下,走的是 script 。 对不起了各位,没好好测试就下了结论。 |