向javascript公开Dart函数
我对dart有点生疏,试图通过在其中编写一些库函数来让我的脚湿润 虽然我从dart调用javascript函数没有问题,但我希望能够从javascript调用dart函数,但到目前为止,我没有太多类似的功能 例如,我希望能够公开dart的一些基本功能,例如:向javascript公开Dart函数,dart,dart-js-interop,Dart,Dart Js Interop,我对dart有点生疏,试图通过在其中编写一些库函数来让我的脚湿润 虽然我从dart调用javascript函数没有问题,但我希望能够从javascript调用dart函数,但到目前为止,我没有太多类似的功能 例如,我希望能够公开dart的一些基本功能,例如: main(){ 字符串foo(){ 返回“酒吧!”; } js.scoped(){ js.context.foo=foo; }); } 然后可以从javascript调用它们,如下所示: window.onload=函数(){ 警报(“
main(){
字符串foo(){
返回“酒吧!”;
}
js.scoped(){
js.context.foo=foo;
});
}
然后可以从javascript调用它们,如下所示:
window.onload=函数(){
警报(“foo()=”+foo());
}
这样的事情可能吗?没问题!看
就你而言:
将'dart:js'导入为js;
main(){
字符串foo(){
返回“酒吧!”;
}
js.context['foo']=foo;
}
在Dart 1.20中,我必须添加allowinetop()
在Dart 2.3.0中,为了让
allowinetop
玩得更好,我不得不稍微调整一下解决方案
import 'dart:js' as js;
main() {
String foo() {
return "bar!";
}
js.context['foo'] = js.allowInterop(foo);
}
突然,它不起作用了:声称“在‘Proxy’中没有这样的setter‘foo’”…是:)js的第一次更新到了0.19,但仍然不起作用。在重新编辑和第二次更新之后,我得到了0.20,一切又恢复了。再次感谢!链接文档“从JavaScript调用Dart”中未提及回调。它被删除了吗?是的,答案已经过时了。现在推荐的方法是什么?另请参阅,这在本机dart(dartium)中效果很好,但在js编译版本(chrome、ff、ie…)中效果不佳。请检查这个。当我删除Allowinetop时,它甚至可以在js编译版本中工作。我正在使用Dart 1.19.1。它是不是在1.20中被修复了?在Chrome和Dartium中似乎对我有效。我会再次检查并报告。再次检查后,我可以确认它在Dartium和Chrome中工作。谢谢验证。我试图创建一个空的示例聚合项目,只包含上面截图中的代码,但它不适合我使用Allowinetop(在Dartium中有效,但在IE、FF、Chrome中无效)。我在多台计算机上的多个浏览器中进行了测试。如果愿意,您可以自己测试:。当您在Chrome中按F12并键入:foo()时,您将得到一个错误,如果您键入foo2(),它将写入“bar2!”
import 'dart:js' as js;
main() {
String foo() {
return "bar!";
}
js.context['foo'] = js.allowInterop(foo);
}