【问题标题】:How to get window name from parent window in dart?如何从飞镖中的父窗口获取窗口名称?
【发布时间】:2015-04-28 00:45:27
【问题描述】:

我可以在 Javascript 中获取父窗口名称,但不知道如何在 Dart 中进行。 我曾尝试将 window.opener 向下投射到 Dart 中的窗口,但它抛出异常。 根据html5.1 nightly,我们应该期望它实现为窗口基本属性吗?

//js version:
window.opener.name
//dart version:
(window.opener as ?).name

【问题讨论】:

  • 能否请您添加 JS 代码以更清楚您的要求?

标签: dart dart-html


【解决方案1】:

对于弹出窗口,可以使用window.opener,对于 iframe,可以使用 window.parent。两者都返回不支持name_DOMWindowCrossFrame,因为它们实现了WindowBase。这也是你不能投到window 的原因。您应该使用postMessage 来交流和交换信息。

另见implementation note它的字段和方法只能通过 JavaScript 访问。

【讨论】:

    【解决方案2】:

    另一种方法是使用 dart-js-interop

    import 'dart:js' as js;
    
    print(new js.JsObject.fromBrowserObject(
        js.context['window'])['opener']['name']);
    

    目前在 Dart 中没有办法。出于安全原因,有意拒绝访问 windows 对象。根据 cmets 在相关错误报告上的说法,他们考虑更改它,因为无论如何都可以使用 dart-js-interop 来解决它。

    【讨论】:

    • 我现在在用这种方式,但是感觉js路由不太舒服
    • 目前没有其他办法。请参阅我的更新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 2011-02-26
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多