在我的应用程序中,我想打开一个新窗口,其中包含另一个带有另一个dart脚本的html页面。我希望新窗口的脚本能够访问主应用程序中的变量和对象。
的index.html
<html>
<head>
</head>
<body>
<button id="btn">open</button>
<script type="application/dart" src="main.dart"></script>
<script data-pub-inline src="packages/browser/dart.js"></script>
</body>
</html>
main.dart
import 'dart:html';
// This object should be accessible from pop.dart
var sharedObject = {
'string1': 'hello',
'string2': 'hello again'
};
void main() {
querySelector('#btn')
..text = 'Pop it'
..onClick.listen(
(event) => popupWindow());;
}
void popupWindow() {
// Open the popup window
var secondWindow = window.open('pop.html', 'my popup');
}
pop.html
<html>
<head>
</head>
<body>
<button id="closeBtn">close it</button>
<div id="poptext"></div>
<script type="application/dart" src="pop.dart"></script>
<script data-pub-inline src="packages/browser/dart.js"></script>
</body>
</html>
pop.dart
import 'dart:html';
// this does not work
var sharedObject = window.opener.sharedObject;
main() {
print('in pop');
DivElement el = querySelector('#poptext');
el.text = sharedObject['string1'];
}
我也尝试使用JS Interop在第一个窗口的上下文中存储要共享的对象,但是我找不到从弹出窗口访问它的方法。
请建议一种方法来完成这项工作。我也愿意接受其他想法以实现目标。