gpt4 book ai didi

IE WebBrowser 控件不支持 Javascript 'map'?

转载 作者:太空狗 更新时间:2023-10-29 15:42:00 25 4
gpt4 key购买 nike

我正在尝试将 d3 ( www.d3js.org ) 与来自 C 的 Microsoft WebBrowser 控件一起使用。d3 使用来自 Array 的 Javascript 'map' 方法。这是自版本 9 以来 IE 中的新功能。虽然 IE10 浏览器能够很好地处理 d3,但 WebBrowser 控件不能。

我正在通过我无法控制的第三方代码调用 document.write()。它是 ole_ie.c,您可以在网上找到它(请参阅“DisplayHTMLStr”)。如果必须,我可以放弃它,但我宁愿不这样做。

这是一个测试字符串:

<!DOCTYPE html>
<head><meta http-equiv="X-UA-Compatible" content="IE=edge" ></meta>
<title>Get documentMode!</title>
</head>
<body>
<h2>document.documentMode</h2>
<p>
<script>
/*@cc_on @*/
document.write(document.documentMode);
alert(@_jscript_version);
var x = ['a'].map(function(a) {});
</script>
<p>
</body>

这在从文件运行时工作正常,但是当发送到 WebBrowser 时(并且您关闭了对话框),您会得到“对象不支持属性或方法‘map’”。

我已将注册表项 FEATURE_BROWSER_EMULATION 设置为各种值(我看到它正在被读取);最近的 0x2711。我也尝试过各种 X-UA-Compatible。通过实验,我实现了 documentMode 的 5、7 或 8。@_jscript_version 是 10。MSHTML.DLL 版本是 10.0.9200.16750。我正在使用 Win7-64。

任何人都可以让它工作吗?

最佳答案

使用 pollyfil 怎么样:

if (!Array.prototype.map)
{
Array.prototype.map = function(fun /*, thisArg */)
{
"use strict";

if (this === void 0 || this === null)
throw new TypeError();

var t = Object(this);
var len = t.length >>> 0;
if (typeof fun !== "function")
throw new TypeError();

var res = new Array(len);
var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
for (var i = 0; i < len; i++)
{
if (i in t)
res[i] = fun.call(thisArg, t[i], i, t);
}

return res;
};
}

(来自 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)

关于IE WebBrowser 控件不支持 Javascript 'map'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21539005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com