하는 방법의 차이를 말 iframe 드 대는 전체 페이지 로딩에 있는 uiwebview?

StackOverflow https://stackoverflow.com/questions/1218493

  •  10-07-2019
  •  | 
  •  

문제

에서[webView:shouldStartLoadWithRequest:navigationType:]이벤트,어떻게 알 수 있습니 사이의 차이 iframe 는 내용을 로드하는 대는 전체 페이지 내용을 로드?그럼 모두 이 동일한 이벤트와 같은 인자,유일한 차이점이 되는 URL 을 가 로드되는 방법이 없습니다 그래서 사이의 차이를 말한다.

나는 생각의 몇 가지 방법의 차이를 말하지만:

  • 분석 소스 코드 페이지의 목록을 저장의 모든 iframe src 특성,가정 하는 경우에는 url 을 로드 중 하나는 사람들의 내 목록에 그것의 iframe.물론 이러한 가정을 수 있습이 잘못되었을 경우 실제로 그것은 페이지로 이동합.
  • 위와 같지만,몇 가지에서 자바스크립트의 페이지를 얻을 수 iframe src 특성이 있습니다.
  • 자바스크립트를 사용하여 설정을 위한 걸이를 때마다 사용자가 페이지로 이동하기가 비슷한 http://niw.at/articles/2009/02/06/how-to-enable-the-popup-window-on-uiwebview/en
  • 자바스크립트를 사용하여 설정 후크 전 iframe 도 데이터 로드(지 어떻게 할 지에 대해서 무언가가 다음과 같이).
  • 수정할 수 각 iframe src 특성을 포함하는 특수 문자열의 끝에서 그것은 src 특성 예"#iframe-로드".드에 있는 uiwebview 이에도 변경된 원시 코드입니다.지만 이에만 작동에 대한 iframe 에 있던 원래 페이지로 그것을 쿼리했을 처음하지 않는 사람들은 동적으로 읽어들,예를 들어,를 통해 자바 스크립트.
  • 자 페이지를 부하에 의해 일반적으로 돌아온 YES 에서[webView:shouldStartLoadWithRequest:navigationType:]이벤트,그리고 그것은 일단로드,보면 WebView 의 URL 이 변경되었는지...그랬다면 즉 그것은 페이지로 리디렉션하지 않을 경우 그것은 아마도 그것을 의미했 iframe 는 로드됩니다.
  • 자바스크립트를 사용하여 재정의 창입니다.위치 setter 속성을 실행하는 내 자신의 코드기 전에 그것이 실제로 변화 창의 위치에 있습니다.이때는 통신으로 목표 C-용자는 다음을 로드하는 실제로 될 것 리디렉션합니다.이것이 유일한 방법으로 리디렉션에서 JavaScript 지만?

최선의 방법은 무엇일까요?의 생각할 수 있는 어떤 방법으로 생각하지 않았는가?하 iframe 특별한 이벤트/시가 조작할 수 있으로 자바스크립트 도움요.

감사

업데이트:그것은 간단하지 않으로 확인 navigationType.지만 링크를 클릭하여 새로운 페이지로 표시됩니다 navigationType=0,자바 스크립트로 리디렉션(변경하는 창입니다.위치)으로 표시됩니다 navigationType=5.Iframe 드로도 표 navigationType=5.그래서 때 navigationType=5,당신은 알지 못하는 경우는 전체 페이지의 Url 이 변경되었을 통해서 자바스크립트 또는다면 그것은 단순히 iframe 로드에는 동일한 페이지.

도움이 되었습니까?

해결책 2

나는 그냥 이 방법을 사용:

자 페이지를 부하에 의해 일반적으로 반환에서 예[webView:shouldStartLoadWithRequest:navigationType:]이벤트,그리고 그것은 일단로드,보면 WebView 의 URL 이 변경되었는지...그랬다면 즉 그것은 페이지로 리디렉션하지 않을 경우 그것은 아마도 그것을 의미했 iframe 는 로드됩니다.

다른 팁

 (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{

BOOL isFrame = ![[[request URL] absoluteString] isEqualToString:[[request mainDocumentURL] absoluteString]];

}

나는 성공적으로 사용되는 HTTP"referer"(실제 머리글자)분야를 감지이다.이 중 하나여야 합 URL 의 기본 페이지(에서 사용할 수 있 webview)또는 다른 것--아마 프레임입니다.

NSString *referer = [request.allHTTPHeaderFields objectForKey:@"Referer"];
NSString *currentPage = [webView.request.mainDocumentURL absoluteString];
BOOL isFrameLoad = [referer isEqualToString:currentPage] == NO;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top