2012-08-29 50 views
8

我使用PhantomJS从任意URL创建屏幕截图。截图之前,我想操纵页面DOM去除所有下拉菜单,因为PhantomJS在页面的左上角错误地呈现它们(一个已知的Phantom issue。)使用PhantomJS进行DOM操作

我有一个简单的DOM脚本以做到这一点:

var selects = document.getElementsByTagName('select'); 

    for (var i=0; i < selects.length; i++) { 
     document.getElementsByTagName('select')[i].style.visibility="hidden"; 
    } 

这已经过测试和独立的JavaScript正常工作。但是,它没有在PhantomJS代码里面工作,我使用收集的截图(显示最后一部分):

page.open(address, function (status) { 

    if (status !== 'success') { 
     console.log('Unable to load the address!'); 
    } else { 
     window.setTimeout(function() { 

      var selects = document.getElementsByTagName('select'); 

      for (var i=0; i < selects.length; i++) { 
       document.getElementsByTagName('select')[i].style.visibility="hidden"; 
      } 

      page.render(output); 

      phantom.exit(); 

     }, 200); 
    } 
}); 

有些仍用错地方了一个选择框渲染。我很感谢帮助解决原始的PhantomJS渲染错误或隐藏DOM中的下拉菜单。谢谢。

回答

2

此代码不起作用? 我在for循环中使用了缓存的选择变量,而不是从DOM中重新选择元素来提高性能。

var selects = document.getElementsByTagName('select'); 
for (var i=0; i < selects.length; i++) { 
    selects[i].style.visibility="hidden"; 
}