Apple Script の中で、
do JavaScript を使う時に、エラーが出ても、
Apple Script 側に 返り値がないとだけ言われて、
javascript の エラー内容がわかりません。
なので、エラー内容をtry - catch で拾って、渡すようにしました。
on err()
return "___ERR___"
end err
on documentElement(args)
set {err_cnt_:aErrCnt} to args & {err_cnt_:0}
tell application "Safari"
set val to do JavaScript "
res = (function() {
try {
return document.outerHTML;
} catch(e) {
return my err() + e.message;
}
}());
" in document 1
end tell
if (offset in val of my err()) > 0 then
--log val
if aErrCnt > 2 then
return val
else
set aErrCnt to aErrCnt + 1
delay 0.5
return my documentElement({err_cnt_:aErrCnt})
end if
end if
return val
end documentElement
エラーが出たら、同じ関数の呼び出しを3回くらいチャレンジして、それでもダメならエラー内容をそのまま返します。
(ERRnull is not an object (evaluating 'ele.outerHTML'))