2017-05-24 5 views
0

Swift에서 쓰고있는 웹 스크래퍼 세트 기능이 있습니다. 자바 스크립트 코어 라이브러리를 사용하고 있습니다. 자바 스크립트를 실행하십시오. 웹에서 파일을 긁어 냈지만 관심있는 몇 가지 기능 만 있습니다. 그러나 파일의 일부에 window 또는 window.currentScript 또는 new window.WeakMap과 같은 내용이 포함되어 있습니다. 이러한 사항은 다음에서 정의되지 않았습니다. JavaScriptCore.JavaScript/Swift + JavaScriptCore - 정의되지 않은 변수는 무시할 수 있습니까?

이 예를 들어, 내가지고있어 오류 중 하나입니다

: 나는 그동안 수행을 시도하고있어 TypeError: undefined is not an object (evaluating 'window.document.currentScript.src.indexOf')

뭔가 이런 monkeypatch erroring의 모든 것들입니다 window={};window.document.currentScript.src={};window.document.currentScript.src.indexOf={}

그리고 이것을 JS에 추가합니다. 그러나 더 좋은 방법이 있어야합니다 ... 맞습니까?

+0

정규식을 사용하는 아이디어가 있습니까? (새 \ var |) \ s * 창. *? (? = \ s |; \) |] | && | \ | \ || : |})'... 완벽하지는 않지만 보통) – settwi

답변

0

내가 끝낸 것은 window에 대한 참조를 모두 무시한 것입니다. JS 파일에서 필자가 필요로했던 기능은 창이나 속성을 참조하지 않았습니다. 내가 원하는 함수의 정의를 추출하기 위해 정규식 마법 (magix?)을 수행하고 그 함수에 대한 새로운 문자열을 만들었습니다. 그런 다음 그 문자열을 JSContext.evaluateScript에게주었습니다. 이 사람이 도움이되기를 바랍니다!