好的,这是我的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更多 - 相关...
答案 0 :(得分:0)
看起来你以某种方式在iframe中的元素上放置了一个点击处理程序。然后外面的窗口对象与iframe中的窗口对象不同。点击发生时,范围就是iframe。
请参阅外表小提琴:http://jsfiddle.net/6fzvkcte/1/ 它有一个iframe与另一个小提琴。您可以看到window.document.body.children.length变量的值不同。
window.document.body.children.length
但是将点击处理程序从父窗口绑定到iframe中的元素有点可怕。这样你也可以绑定到keydown并窃取我的密码和金钱。正如你所看到的,它在小提琴中没有任何作用(至少在Chrome中)。