2014-07-19 3 views
0

URL을 한 페이지에 캡쳐 한 다음 대상을 열어야합니다. 가장 우아한 솔루션은 무엇입니까? 변수 url은 기본적으로 로컬이기 때문에 아래 코드는 작동하지 않습니다.PhantomJS가 page.open에 변수를 전달합니다.

function() { 
    page.open("https://www.google.com/blah"); 
}, 
function() { 
    page.evaluate(function() { 
    var url=document.getElementById('link42')[0]; //URL captured 
    }); 
}, 
//opening the target 
function() { 
    page.open(url); 
}, 
function() { 
    page.evaluate(function() { 
    console.log(document.querySelectorAll('html')[0].outerHTML); 
    }); 
} 

답변

1

으로 만들 수 있습니다. 페이지 컨텍스트에서 URL을 가져 오는 방법을 기억하면됩니다. DOM 요소를 반환 할 수는 없지만 JSON을 직렬화 할 수있는 모든 것을 반환 할 수 있습니다. page.evaluate에서

인용구 :

참고 : 인수와 평가 함수에 반환 값은 단순한 원시 객체 여야합니다. 경험 법칙 : JSON을 통해 직렬화 할 수 있다면 괜찮습니다. 당신이 [0]을 사용할 수 있도록

var url; 

// function chainer 
function() { 
    page.open("https://www.google.com/blah"); 
}, 
function() { 
    url = page.evaluate(function() { 
    return document.getElementById('link42').href; // href captured 
    }); 
}, 
//opening the target 
function() { 
    page.open(url); 
} 

getElementById은 단지 하나의 요소를 반환합니다.

관련 문제