我试图在激活zombie.js使用javascript的链接后获取新打开窗口的html。
这是html代码
<html>
<head>
<script type="text/javascript">
function newin(id)
{
var url="page.php?id="+id;
window.open(url,id,"toolbar=no,location=top,directories=no,status=no,scrollbars=yes,hscroll=no,resizable=yes,copyhistory=no,width=1025,height=1250");
}
</script>
</head>
<body>
<div>
<a href="javascript:newin(123)">123</a><br/>
<a href="javascript:newin(234)">234</a><br/>
<a href="javascript:newin(345)">345</a><br/>
</div>
</body>
我使用的脚本是:
var Browser = require("zombie");
var browser = new Browser();
browser.visit("http://localhost:8000/testpage.html", function () {
browser.wait(function(){
var selector = "a[href*='newin']";
var elements = browser.queryAll(selector);
for (var e=0;e<elements.length;e++){
browser.clickLink(elements[e],function(){
browser.wait(function(){
console.log(browser.html());
});
});
}
});
});
我无法获取任何窗口的HTML。任何想法此代码中有什么问题?或者这可能与phantomjs ??
答案 0 :(得分:0)
最后我才知道,如果链接在href或动作中直接包含JavaScript,Zombie似乎明白,打开像普通超链接一样的新页面会。虽然JavaScript仍然正确执行,但由于Zombie尝试将无效目标加载为新页面而导致DOM丢失。
有问题的链接就是例如。
<a href="javascript:void(0)">test</a>
不支持javascript:链接,它仍然是一个悬而未决的问题: