2017-12-30 28 views
0

이미 완전히로드 된 페이지에서 일부 자바 스크립트를 실행하려고합니다. 페이지가로드되는 동안 자바 스크립트 참조 오류가 있지만 북마크를 사용할 때 작동합니다.

, 나는 북마크를 만들어, 그것을 클릭 자바 스크립트를 테스트하려면, 그것은 제대로 실행 :

javascript:(array.find('value').__showAllRecords(event)) 

내가 그 보냅니다 쓰고 있어요 AppleScript로이 자바 스크립트를 사용하고 싶었 나는 내가 북마크를 사용하지 않을 때, 내 애플 스크립트 편집기에서 내 스크립트를 실행할 때 그것은 단지 발생

Uncaught ReferenceError: array is not defined 
    at <anonymous>:1:1 

: 크롬에, 그러나 어떤 이유로,이 오류를 받고 있어요. 여기 내 애플 스크립트 코드입니다 :

tell application "Google Chrome" 
    execute front window's active tab javascript "array.find('value').__showAllRecords(event)" 
end tell 
+0

을하는 데 도움이

tell application "Google Chrome" execute front window's active tab javascript "console.log(document.getElementById(\"test\").innerHTML)" end tell 

희망을 실행할 수 있습니다, 내 사업부의 <div id="test">[1,2,3]</div>입니다. 배열을 어디에서 정의 했습니까? – cdoshi

답변

0

스크립트가 실행 된 후에 다시 시도 수있을 때 존재 않을 때까지 당신이 알고하지 않기 때문에 변수 array이 시간에 어떤 시점에서 생성됩니다

(function(){ 
 
    function trySomething(){ 
 
    try{ 
 
     array.find('value').__showAllRecords(event); 
 
     console.log("worked, stop trying"); 
 
     clearInterval(timer); 
 
    }catch(e){ 
 
     console.log("didn't work, try again",e); 
 
    } 
 
    } 
 
    var timer = setInterval(trySomething,1000); 
 
}()) 
 

 
//create the array object some time in the future (not actually an Array type) 
 
//this is not part of your script but would be created by the page 
 
//at some point 
 
setTimeout(
 
()=>window.array={find:x=>({__showAllRecords:x=>x})} 
 
    ,6000 
 
)

0

불행히도, applescript는 기본이 아닌 전역 변수에 액세스 할 수 없습니다. 스레드를 참조하십시오 https://bugs.chromium.org/p/chromium/issues/detail?id=543437

하지만 해결 방법이 있습니다. 할 수있는 일은 div의 innerHTML로 배열을 설정하고 applescript에서 값을 검색하는 것입니다. 예를 들어 이것은 당신이 내가 배열뿐만 아니라 북마크에 정의되지 않은 얻고있다

+0

이것은 도움이 될지 모르지만 문제는 내가 개발하지 않은 사이트에서이 스크립트를 실행하려고하는데, 매크로를 만들려고하기 때문에 배열이 어디에 정의되어 있는지 잘 모르겠습니다. 어떤 아이디어? –

+0

내가 볼 수있는 것은, 애플 스크립트가 페이지 변수에 직접 액세스 할 수 없으므로 DOM에서 정보를 얻는 것이 좋습니다. – cdoshi