javascript - 브라우저 - wkusercontentcontroller storyboard



Objective-C를 사용한 JavaScript 주입 방법 (2)

JavaScript를 WebView (코코아)에 삽입하는 여러 가지 방법을 찾고 있습니다.

WebView에로드 된 HTML 파일의 <head> 태그에 일부 자바 스크립트를 삽입하려고합니다.

다음 방법은 나를 위해 작동하지 않습니다. 중첩 된 대괄호없는 매우 간단한 JavaScript에서만 작동하는 것으로 보인다.

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"var script = document.createElement('script');"
                                                     "script.type = 'text/javascript';"
                                                     "script.text = \"some simple JavaScript"
                                                     "}\";"
                                                     "document.getElementsByTagName('head')[0].appendChild(script);"]];

더 복잡한 JavaScript / jQuery 함수로 이것을 수행하는 다른 방법이 있습니까?

내가 주입하려고하는 전체 코드는 다음과 같습니다 :

function submitFormForTime(time){
    $(\".t_h\").each(function(i, obj) {
        if ($(this).text() != time) return;
        $(this).parent().find(\"form\").each(function(i, obj){
            obj.submit();
        });
    });
}

https://ffff65535.com


나는 이것을 시도하지 않았지만 문제가 괄호와 코드의 복잡성과 함께 있다면 번들에 저장된 JS 파일을 호출 해 볼 수 있습니다. 어쩌면 그것을 해결할 수 있습니다. 예 :

NSData *fileData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@”submitFormForTime ofType:@”js”]];

NSString *jsString = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];

[webView stringByEvaluatingJavaScriptFromString:jsString];

인코딩 유형을 설정하면 모든 괄호를 올바르게 파싱하는 데 도움이됩니다.


웹보기에서 모든 HTML을 가져온 다음 코드를 삽입하고 페이지를 다시로드합니다. 그것은 여전히 ​​적절한 주입 방법은 아니지만 작동 할 수 있습니다.

NSString *htmlDataString = [webView stringByEvaluatingJavaScriptFromString: @"document.documentElement.outerHTML"];
// use nsstring methds to find the place for injecting
// inject avascript code
[webView loadHTMLString:htmlDataString baseURL:nil];

당연히 당신은 귀하의 요청에 따라 기본 URL을 가질 수 있습니다.





code-injection