2012-08-29 51 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"; 
}