source

UI WebView 내부에서 Javascript를 디버깅하는 방법에는 어떤 것이 있습니까?

nicesource 2023. 6. 3. 08:31
반응형

UI WebView 내부에서 Javascript를 디버깅하는 방법에는 어떤 것이 있습니까?

UI WebView 내부에서 Javascript가 작동하지 않는 이유를 알아보려고 합니다.제가 알기로는 Js 파일에 대한 XCode 내부의 중단점을 설정할 방법이 없습니다.문제 없습니다. 2004년으로 돌아가서 경보 명령어를 사용하겠습니다. 잠시만요. UI WebView에서도 작동하지 않는 것 같습니다.

제가 생각할 수 있는 유일한 방법은 HTML과 JS 파일을 제 데스크톱으로 내보낸 다음 Safari에서 디버깅을 하는 것입니다.효과가 있습니다!하지만 물론 UI WebView에서 제가 사용하는 버그는 Safari에서 발생하지 않습니다.

UI WebView 내부를 디버깅하는 다른 방법이나 이전 경고 방법과 유사한 트릭이 있습니까?

iOS > = 6을 사용하고 있고 마운틴 라이온(10.8) 또는 Safari > = 6을 사용하고 있다면 다음과 같이 할 수 있습니다.

  1. 시뮬레이터에서 애플리케이션을 엽니다(또는 XCode > = 4.5.x의 장치).
  2. 로 이동)Preferences -> Advanced메뉴바에서 개발 메뉴 표시가 켜져 있는지 확인합니다.
  3. 에서 (Safari)를 합니다.Develop -> iPhone Simulator -> [your webview page].

바로 그거야!

이 쿼리는 구글 최고 수준이므로 원격에 연결할 가치가 있습니다.iOS5에 숨겨진 인스펙터 - UI WebView를 디버깅하는 데 지금까지 발견된 가장 좋은 방법 - Apple로 보내기 전에 조건부 컴파일만 수행합니다.

UI WebView 또는 SFSafariView Controller를 디버깅하는 멋진 방법이 있습니다.

도움이 되길 바랍니다.

1단계: Mac에서 Safari VC를 엽니다(하하하 표정 짓지 마세요, 제가 당신의 맥북에서 말하고 있다면, 제 단계를 따라주세요).

2단계: Safari 기본 설정으로 이동하고 고급을 클릭합니다.MacBook 화면에 이 설정이 표시됩니다.

여기에 이미지 설명 입력

이제 메뉴 모음에서 Show to develop 메뉴를 활성화합니다.이제 모든 작업이 완료되었습니다.내가 농담한다고 생각하는거야 :P:P 아무도... 



3단계: 장치 또는 시뮬레이터에서 응용 프로그램을 실행합니다. (그냥 실행한다고 생각하지 마십시오.) 그리고 웹뷰 또는 SFSafariView 컨트롤러를 열고 있는 응용 프로그램으로 이동합니다.지금까지 당신은 내가 아는 것을 이해하지 못했습니다.침착하게 내 다음 단계를 봐요.

4단계: MacBook에서 Safari를 열고 메뉴 모음에서 개발 옵션을 클릭합니다.MacBook, iPad/iPhone이 올바르게 표시되는 것을 얻었습니까???

여기에 이미지 설명 입력

5단계:완료되었습니다. 장치를 클릭하고 URL을 클릭하면 새 팝업이 이렇게 나타납니다.여기에 이미지 설명 입력

6단계: 지금 보고 있는 것은 모든 단계입니다.

이제 이 콘솔에서 웹 페이지를 디버그합니다.차나 커피와 함께 코딩을 하면서 행복하고 즐거운 하루 보내세요.

IMP: 아래 이미지 참조를 사용하도록 설정하는 것을 잊지 마십시오. 여기에 이미지 설명 입력 








alert ()는 확실히 저에게 효과가 있습니다.

그러나 계층에 나타나는 고유한 DHTML 알림 만들기와 같은 많은 다른 작업도 수행할 수 있습니다.이것은 앱을 중지하지 않고 단일 디비에 여러 알림을 수행할 수 있기 때문에 유용할 수 있습니다.또한 스택 추적을 작성할 수 있어야 합니다(스택 추적은 예외 개체에 있으므로 항상 자신의 예외를 던질 수 있습니다).

또는 시뮬레이터에서 실행 중인 경우 사용자 정의 "alert()"가 객체 C를 호출하여 iPhone 시뮬레이터의 콘솔 창에 문자열을 표시할 수 있습니다.

document.location.href = "http://debugger/" + 
   encodeURIComponent(outputString);   

객관적인 C측에서:

//--------------------------------------------------------------------
- (BOOL)webView:(UIWebView*)webView 
       shouldStartLoadWithRequest: (NSURLRequest*)req 
       navigationType:(UIWebViewNavigationType)navigationType {
    if ([[[req URL] host] isEqualToString:@"debugger"]){
        // do stuff with [[req URL] path] 
       }
}

그렇긴 하지만, 저는 UiWebView / javascript 내용이 많은 앱을 가지고 있으며, 대부분의 javascript dev를 Chrome에서 하는 경향이 있습니다(iPhone 환경에서 필요한 것을 시뮬레이션).

저는 아직 시도해보지 않았지만, 이 와인을 보세요.

매우 유망해 보입니다.

이것은 오래된 질문입니다.하지만 저는 여전히 제 2센트를 나누고 싶습니다.

원격 디버깅을 위해 jsconsole.com 을 사용하고 있습니다.쉬워요.스크립트 태그를 포함하고 콘솔 로그를 사용하여 인쇄를 통해 디버그합니다.실제 장치에서 디버깅하는 데도 사용할 수 있습니다.

오래된 질문이지만, 제 경우 uiwebview를 디버그해야 하지만 IOS 앱에는 액세스할 수 없고 html 컨텐츠에만 액세스할 수 있으며 일부 JS 로그를 봐야 했기 때문에 라이트 파이어버그 JS를 로드하고 자동으로 표시하기 위해 다음 코드를 추가했습니다.

JS에서 전화하기

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://getfirebug.com/firebug-lite-debug.js';
document.head.appendChild(script);

또는 html에서 로드합니다.

<script type="text/javascript" src="https://getfirebug.com/firebug-lite-debug.js"></script>

PhoneGap에서 사용되는 것과 같은 시스템을 설정하여 JavaScript에서 Objective-C로 메시지를 보내고 거기서 로그할 수 있습니다.즉, 사용자 지정 체계로 document.location을 설정하고 위임 콜백에서 해당 체계를 차단하는 것입니다.

UI WebView가 대부분의 WebView 대리인이라는 사실을 활용할 수 있습니다.WebKit는 iPhone용으로 기술적으로 문서화되어 있지 않지만, WebScriptObject를 포함하여 데스크톱 WebKit 헤더에 지정된 것과 대부분 동일합니다.디버깅에 사용하지만 Apple에 제출하기 전에 이 코드를 제거해야 합니다.

WebView와 같은 위임 방법을 합니다.-(void) webView:(id)inWebView didFinishLoadForFrame:(id)inWebFrameUI WebView의 하위 클래스에 있습니다.그거 쓰면 슈퍼라고 해요.

언급URL : https://stackoverflow.com/questions/2767902/what-are-some-methods-to-debug-javascript-inside-of-a-uiwebview

반응형