UIWebView 내에서 Javascript를 디버깅하는 몇 가지 방법은 무엇입니까?
왜 Javascript가있는 것이 UIWebView 내에서 작동하지 않는지 알아 내려고합니다. 내 지식으로는 js 파일의 XCode 내부에 중단 점을 설정할 수있는 방법이 없습니다. 문제 없습니다. 2004 년으로 돌아가 경고 상태를 사용하겠습니다. 오, UIWebView 내부에서도 작동하지 않는 것 같습니다.
내가 생각할 수있는 유일한 것은 HTML 및 JS 파일을 데스크탑으로 내 보낸 다음 Safari 내에서 디버깅하는 것입니다. 그리고 그것은 작동합니다! 물론 UIWebView에서 싸우는 버그는 Safari에서 발생하지 않습니다.
UIWebView 내부에서 디버깅하는 다른 방법이나 구식 경고 방법을 사용하는 것과 비슷한 트릭이 있습니까?
iOS> = 6을 사용 중이고 산사자 (10.8) 또는 Safari> = 6 인 경우 다음을 수행 할 수 있습니다.
- 시뮬레이터 (또는 XCode> = 4.5.x의 장치)에서 응용 프로그램을 엽니 다.
- Safari
Preferences -> Advanced
를여십시오 ( "메뉴 막대에 개발 메뉴 표시" 로 이동 하십시오). - Safari의 메뉴 표시 줄에서을 선택하십시오
Develop -> iPhone Simulator -> [your webview page]
.
그게 다야!
이 쿼리는 Google을 최우선으로하여 iOS5에 숨겨진 remoteInspector에 연결 하는 것이 좋습니다. 지금까지 UIWebViews를 디버깅하는 가장 좋은 방법은 Apple에 보내기 전에 조건부 컴파일입니다.
alert () 확실히 나를 위해 작동합니다.
그러나 레이어에 팝업되는 DHTML 경고를 직접 만드는 등 다른 많은 작업을 수행 할 수도 있습니다. 앱을 중지하지 않고 단일 div에 여러 번 경고 할 수 있기 때문에 좋습니다. 또한 스택 추적을 작성할 수 있어야합니다 (스택 추적은 예외 개체에 있으며 언제든지 자신의 예외를 throw 할 수 있음).
또는 시뮬레이터에서 실행중인 경우 사용자 정의 "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에 무거운 앱이 있으며 Chrome에서 대부분의 javascript 개발자를 수행하는 경향이 있습니다 (iPhone 환경에서 필요한 것을 시뮬레이션).
나는 아직 이것을 시도하지는 않았지만 이것을 보아라.
매우 유망 해 보인다.
이것은 오래된 질문입니다. 그러나 나는 여전히 내 2 센트를 공유하고 싶습니다.
원격 디버깅을 위해 jsconsole.com 을 사용하고 있습니다. 그것은 간단합니다. 스크립트 태그를 포함하고 콘솔 로그를 사용하여 인쇄하여 디버그하십시오. 실제 장치에서 디버깅하는 데에도 사용할 수 있습니다.
오래된 질문이지만 최선의 해결책을 찾았다 고 생각합니다. 제 경우에는 uiwebview를 디버깅해야하지만 IOS 앱과 HTML 내용에만 액세스 할 수 없으며 JS 로그를보아야합니다. 다음 코드를 추가했습니다. light firebug 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>
UIWebView 또는 SFSafariViewController 를 디버깅하는 가장 좋은 방법을 얻습니다 .
도움이 되길 바랍니다.
1 단계 : Mac에서 Safari VC 열기 (hahaha 얼굴을 만들지 마십시오. Macbook에서 말하면이 단계를 따르십시오)
2 단계 : Safari 환경 설정으로 이동하여 고급을 클릭하십시오. MacBook 화면에서이 설정을 가져옵니다.
이제 메뉴 표시 줄에서 Show to develop 메뉴를 활성화하십시오. 이제 모든 작업이 완료되었습니다. 내가 농담하고 있다고 생각하니 : P : P no man ...
Step3: Run your application in Device or Simulator. (Don’t Think Just run ) And go in your application where you are opening your Webview or SFSafariViewController. Till now you did not understand I know. Be cool and see my next step.
Step4: Open Safari In your MacBook and Click on Develop Option from the Menu bar. Did you get something your MacBook, iPad/ iPhone is Displaying Right?????
Step5: Its Done. click your device and click on URL New popup will come out like This.
Step6: what are you looking now its over here all the steps.
Now debug your Webpage on this console. Be happy and enjoy your day while doing coding With a cup of tea or Coffee.
IMP: Don't forget to enable See Below Image
You can set up a system like that used in PhoneGap to send messages from JavaScript to Objective-C and log from there. In a nutshell, they are setting document.location with a custom scheme and blocking that scheme in the delegate callback.
You can take advantage of the fact that a UIWebView is most of the delegates for a WebView. WebKit is technically undocumented for iPhone, but mostly the same as specified in the desktop WebKit headers, possibly including the WebScriptObject. I use this for debugging, but be sure to strip this code out before submitting to Apple.
To get a WebView from a UIWebView, implement a delegate method like -(void) webView:(id)inWebView didFinishLoadForFrame:(id)inWebFrame
in a subclass of UIWebView. Call super if you use that one.
'Programing' 카테고리의 다른 글
MSBuild를 실행하면 SDKToolsPath를 읽을 수 없습니다. (0) | 2020.07.04 |
---|---|
CONST를 PHP 클래스에서 정의 할 수 있습니까? (0) | 2020.07.04 |
큰 HTML 문자열에서 jQuery 객체 만들기 (0) | 2020.07.04 |
AttributeError : 'datetime'모듈에 'strptime'속성이 없습니다. (0) | 2020.07.04 |
함수에 대한 C ++ 11의 "최종"키워드의 목적은 무엇입니까? (0) | 2020.07.04 |