这个问题之前已经问过关于模拟DOM 中已经存在的锚点上的点击事件。我的问题是如何模拟分离节点上的点击事件。
到目前为止,这适用于除 IE9 及以下版本之外的所有浏览器。这是一个重现问题的独立 HTML 文件(我正在使用 IE8 进行测试):
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script>
function goToBlankPage() {
// Create link in memory
var a = window.document.createElement("a");
a.target = '_blank';
a.href = "http://google.com/";
// Dispatch fake click
if (window.document.createEvent) {
var e = window.document.createEvent("MouseEvents");
e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(e);
} else if (window.document.createEventObject) {
try {
var parentEl = document.createElement("div");
parentEl.appendChild(a);
var clickEvent = document.createEventObject();
clickEvent.button = 1; // left mouse button
a.fireEvent('onclick', clickEvent);
} catch(ex) {
alert(ex);
}
}
}
</script>
<a href="javascript:goToBlankPage()">Blank Page</a>
</body>
</html>
我必须指定父母,否则我会收到错误:警报中的未指定错误。
有任何想法吗?