咳,咳, JS帝进来翻译一下这几行代码, 看看是什么意思。

骄傲青蛙 2011-04-08 10:54:35


/*来注解一下*/
javascript:(
function(q){
!!q?q.toggle():(
function(d,j){j=d.createElement('script');
j.src='//ime.qq.com/fcgi-bin/getjs';
j.setAttribute('ime-cfg','lt=2&im=212');
d.getElementsByTagName('head')[0].appendChild(j)
}
)(document)
}
)(window.QQWebIME)

...全文
328 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
骄傲青蛙 2011-04-13
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 hushc 的回复:]

引用 18 楼 coolesting 的回复:

咳, 最后一问,

这段代码在不跳转页面情况下,能实时调用他方服务器的内容,算是JS的跨域了吗?


script并不存在跨域问题!
一般的跨域问题为iframe跨域、ajax跨域!
[/Quote]

嗯, 基于客观上来说, js不存在所谓的跨域,
但你的理解和我的有些出入,

平时, 用ajax调用后端服务器数据都是同一域名下,
但这段代码是调用第二方服务器的数据, 也就是不同域名,

例如,
你打开了一个页面叫 www.abc.com. 但在这个页面里有一个div里显示的信息却是 www.bbc.com网站数据,而且是实时刷新(即二网站的数据同步变化,通过这ajax调用) ,
那么, 这个ajax调用的bbc.com数据时, 不通过abc.com后台间接返回, 是直接向bbc.com服务器发请求。
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 hushc 的回复:]
script并不存在跨域问题!
一般的跨域问题为iframe跨域、ajax跨域!
[/Quote]
至此全帖问题结束,来晚了。
iLove9ouHenry 2011-04-10
  • 打赏
  • 举报
回复
跨域问题 经常困扰着大家啊。。
hushicai 2011-04-10
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 coolesting 的回复:]

咳, 最后一问,

这段代码在不跳转页面情况下,能实时调用他方服务器的内容,算是JS的跨域了吗?
[/Quote]

script并不存在跨域问题!
一般的跨域问题为iframe跨域、ajax跨域!
hushicai 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cb1156 的回复:]
HTML code

function(q){//匿名函数,有一个参数,在最后加上()立即执行
!!q?q.toggle():(//三目表达式 2个!表示转换为bool型,意思是存在则执行q.toggle。q为后面传入的那个参数window.QQWebIME,如果q不存在则执行后面的代码
function(d,j){j=d.create……
[/Quote]

四楼已经详细地给了注释,不过在这里我要补充一下前面"javascript:"

这个javascript:称为JavaScript伪协议,一般写在链接的url上,用于执行javascript动作;
比如我们我想在标签a上执行某个动作而不是页面跳转,那么就可以使用JavaScript伪协议,这个比一般使用“#”好得多,使用“#”会发生文档内位置跳转。

而使用JavaScript伪协议,就可以达到执行动作而不跳转的目的,这个时候只需要保证JavaScript伪协议的最后一条语句无返回值即可。

lz代码中的伪协议一个匿名函数,函数默认返回undefined,此外我们还可以使用void 0;来是使伪协议无返回值。
ZiSheng 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 bennman 的回复:]
引用 8 楼 zisheng 的回复:

4楼正解,LZ多加的javascript:把我弄晕了。


用javascript: 这个 应该是直接将代码写在 标签里吧!
[/Quote]
了解,标签也可以写这么多?
骄傲青蛙 2011-04-09
  • 打赏
  • 举报
回复
是伪跨域。。。。。。
骄傲青蛙 2011-04-09
  • 打赏
  • 举报
回复
咳, 最后一问,

这段代码在不跳转页面情况下,能实时调用他方服务器的内容,算是JS的跨域了吗?
lchy110 2011-04-08
  • 打赏
  • 举报
回复
狐狸 写的蛮细 呵呵 赞一个
ZiSheng 2011-04-08
  • 打赏
  • 举报
回复
4楼正解,LZ多加的javascript:把我弄晕了。
cb1156 2011-04-08
  • 打赏
  • 举报
回复

function(q){//匿名函数,有一个参数,在最后加上()立即执行
!!q?q.toggle():(//三目表达式 2个!表示转换为bool型,意思是存在则执行q.toggle。q为后面传入的那个参数window.QQWebIME,如果q不存在则执行后面的代码
function(d,j){j=d.createElement('script');//匿名函数,有2个参数,JS的特性可以只传入一个,则d表示后面传入的 document。 createElement是创建标签
j.src='//ime.qq.com/fcgi-bin/getjs';//设置script标签的属性
j.setAttribute('ime-cfg','lt=2&im=212');//同上
d.getElementsByTagName('head')[0].appendChild(j)//将script标签加入head节点的里面
}
)(document)
}
)(window.QQWebIME)





好吧。 写点注释
knightzhuwei 2011-04-08
  • 打赏
  • 举报
回复
!!q 这是把非boolean类型变量转为boolean类型
cb1156 2011-04-08
  • 打赏
  • 举报
回复
如果window.QQWebIME存在 执行 window.QQWebIME.toggle方法
否则添加一个script 引用
bennman 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zisheng 的回复:]

4楼正解,LZ多加的javascript:把我弄晕了。
[/Quote]

用javascript: 这个 应该是直接将代码写在 标签里吧!

87,920

社区成员

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

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