我有一个带按钮的网页。点击代码为:
var html = ...html string containing visual and script elements...
var view = window.open();
view.document.write(html);
view.init(<parameters>); // see next code block
html内容是:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
html, body {
height: 100%;
margin: 0;
}
</style>
</head>
<body>
<div id="id1"></div>
<script>
function init(<parameters>) {
...work...
}
</script>
</body>
</html>
问题在于chrome中的init函数调用:如果我在IE中,那么一切都很好,但在chrome中我得到“init function not defined”异常。 我该怎么做才能在所有浏览器中使用它?当然,我正在寻找一种不需要服务器往返的解决方案。
答案 0 :(得分:0)
如果这是非常真实的话,即时通讯如此idk,但我已阅读,即允许你做更多然后chrome或firefox。这可能是其中一个例子,即让你做某事。
答案 1 :(得分:0)
使用document.write确实可以在创建我想要的页面时起作用。问题是当我想调用该页面内的javascript块中定义的函数时。不同的浏览器给出不同的结果,所以我想这是一个尚未完全标准化的问题。互联网上有关于此的帖子,但我找不到明确而共同的答案。 然后我用一种解决方法解决了我的僵局。初始标记现在包含参数的占位符:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
html, body {
height: 100%;
margin: 0;
}
</style>
</head>
<body>
<div id="id1"></div>
<script>
(init = function () {
var parameter1 = ${{placeholder1}}
var parameter2 = ${{placeholder2}}
...
...work...
})();
</script>
</body>
</html>
然后,创建代码用实际值替换占位符:
var html = ...html string containing placeholders...
html = html.replace("${{placeholder1}}", actual1);
html = html.replace("${{placeholder2}}", actual2);
...
var view = window.open();
view.document.write(html);
现在在同一页面上下文中调用init函数,这也适用于Chrome。
答案 2 :(得分:-1)