Coffeescript的奇怪问题 - Literal参数发送为null

时间:2014-10-23 12:12:53

标签: javascript jquery objective-c cocoa coffeescript

好的,这是我的Coffeescript的大纲:

(($) ->
    class MyClass 

        MyFunction: (someArg)->
             @iframe().find("[id]").click((e)=>
                window.objc.log_("SOMETHING");
             );
) jQuery

对于那些想知道的人来说,objc是Objective-C对象,它声明了log_。事情是IS调用的函数。但是,即使我使用文字字符串(如示例中),字符串也是null

如果我从(($)-> ...) jQuery块之外调用完全相同的函数,它可以正常工作。

发生了什么?


PS 这是related question I posted earlier,但我越是看到它,我就越倾向于相信它与JavaScript相关的比Objective-C更多 - 相关...

1 个答案:

答案 0 :(得分:0)

看起来你以某种方式在iframe中的元素上放置了一个点击处理程序。然后外面的窗口对象与iframe中的窗口对象不同。点击发生时,范围就是iframe。

请参阅外表小提琴:http://jsfiddle.net/6fzvkcte/1/ 它有一个iframe与另一个小提琴。您可以看到window.document.body.children.length变量的值不同。

window.document.body.children.length

但是将点击处理程序从父窗口绑定到iframe中的元素有点可怕。这样你也可以绑定到keydown并窃取我的密码和金钱。正如你所看到的,它在小提琴中没有任何作用(至少在Chrome中)。