运行 使用 execScript 的 JS 或 JQ 总是在 mshtml 中抛出语法错误
Running JS or JQ using execScript always throws syntax error in mshtml
错误代码为“0x80020101”,并未指明代码中存在问题的实际部分。
真正让我困惑的是 运行 通过控制台运行的脚本没有错误。
代码如下所示:
int index = element_td.cellIndex;
var scriptBody =
"function myFunc() {" +
"var row = document.querySelectorAll('#QueryModel_Provider_ProviderDropdownTable tbody tr')[" + index + "]; " +
"console.log(row);" +
"var clickEvent = document.createEvent('MouseEvents'); " +
"clickEvent.initEvent('mousedown', true, true); " +
"row.dispatchEvent(clickEvent);" +
"};" +
"myFunc();";
doc1.parentWindow.execScript(scriptBody);
似乎认为行:row.dispatchEvent(clickEvent);
有问题,但我没有发现任何问题。
我知道我可以使用 JQ 在一行中完成此操作,但我在这样做时也遇到了此错误 - 因此尝试使用原始 JS 方法。 (值得注意的是,我没有尝试在函数中使用代码块,它只是拒绝首先确认 $)
我可以将所有内容都放在一行中 - 但现在代码的可读性更为重要。
大多数 IE 版本不支持 dispatchEvents,请改用自定义事件的 polyfill:
https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
错误代码为“0x80020101”,并未指明代码中存在问题的实际部分。
真正让我困惑的是 运行 通过控制台运行的脚本没有错误。 代码如下所示:
int index = element_td.cellIndex;
var scriptBody =
"function myFunc() {" +
"var row = document.querySelectorAll('#QueryModel_Provider_ProviderDropdownTable tbody tr')[" + index + "]; " +
"console.log(row);" +
"var clickEvent = document.createEvent('MouseEvents'); " +
"clickEvent.initEvent('mousedown', true, true); " +
"row.dispatchEvent(clickEvent);" +
"};" +
"myFunc();";
doc1.parentWindow.execScript(scriptBody);
似乎认为行:row.dispatchEvent(clickEvent);
有问题,但我没有发现任何问题。
我知道我可以使用 JQ 在一行中完成此操作,但我在这样做时也遇到了此错误 - 因此尝试使用原始 JS 方法。 (值得注意的是,我没有尝试在函数中使用代码块,它只是拒绝首先确认 $)
我可以将所有内容都放在一行中 - 但现在代码的可读性更为重要。
大多数 IE 版本不支持 dispatchEvents,请改用自定义事件的 polyfill: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent