[webView : shouldStartLoadWithRequest : navigationType :] 이벤트에서 콘텐츠를로드하는 iframe과 전체 페이지로드 콘텐츠의 차이점을 어떻게 알 수 있습니까? 같은 인수를 사용하여이 동일한 이벤트를 호출하는 것처럼 보입니다. 단 하나의 차이점은로드 될 URL이므로 다른 두 가지 차이점을 알 수있는 방법은 없습니다.UIWebView에서 iframe 로딩과 전체 페이지 로딩의 차이점을 확인하는 방법은 무엇입니까?
그래도 난 차이를 말할 수있는 몇 가지 방법을 생각했습니다
- 페이지의 소스 코드를 구문 분석하고 모든 iframe이 SRC 속성의 목록을 저장, 가정의 URL 로딩 한 경우 그 내 목록에있는 사람들 중 iframe입니다. 물론이 가정은 실제로 페이지로 이동하는 경우 올바르지 않을 수 있습니다.
- 위와 동일하지만 페이지에서 일부 JavaScript를 실행하고 iframe src 특성을 가져옵니다. 자바 스크립트를 사용
- 는 자바 스크립트를 사용하여 http://niw.at/articles/2009/02/06/how-to-enable-the-popup-window-on-uiwebview/en
- 유사한 사용자가 페이지로 이동하려고 할 때마다 후크를 설정, 바로 iframe을하기 전에 후크를 설정로드 데이터 (나는 같은 것을 할 것입니다 방법을 잘) 시도 .
- 각 iframe의 src 속성이 해당 src 속성의 끝에 특수 문자열을 포함하도록 수정합니다. "# iframe-loading". 이 수정 된 소스 코드로 UIWebView를로드하십시오. 이 기능은 동적으로로드 된 페이지가 아니라 처음 페이지에서 처음 조회 된 iframe에만 작동합니다. JavaScript를 통해
- [webView : shouldStartLoadWithRequest : navigationType :] 이벤트에서
YES
을 반환하여 페이지가 정상적으로로드되도록하고 일단로드가 완료되면 WebView의 URL이 변경되었는지 확인합니다. 그렇지 않으면 페이지 리디렉션임을 의미합니다. 그렇지 않은 경우로드 된 iframe 일 가능성이 높습니다. - 자바 스크립트를 사용하면 실제로 창 위치를 변경하기 전에 window.location 속성 설정 도구를 재정 의하여 내 코드를 실행하십시오. 그러면 Objective-C와 통신하여 다음로드가 실제로 리디렉션이 될 것임을 알릴 수 있습니다. 이것이 JavaScript에서 리디렉션 할 수있는 유일한 방법입니까?
가장 적합한 방법은 무엇입니까? 내가 생각하지 못했던 어떤 생각을 할 수 있니? iframe에 JavaScript를 사용하여 조작 할 수있는 특별한 이벤트/속성이 있나요?
감사
업데이트 : 그것은 단지 navigationType을 확인하는 것만 큼 간단하지 않습니다. 새로운 페이지를 열려면 링크를 클릭해도 navigationType = 0으로 표시되지만 JavaScript 리디렉션 (window.location 변경)은 navigationType = 5로 표시됩니다. iframe로드도 navigationType = 5로 표시됩니다. 따라서 navigationType = 5, 전체 페이지가 JavaScript를 통해 URL을 변경했는지 아니면 동일한 페이지에로드하는 iframe인지 여부는 알 수 없습니다.
난 그냥이 방법을 사용
그들의 정수 값으로 유형을 열거 navigationType == 5. 대신 코드에서 이름으로 이름을 참조해야합니다. UIWebViewNavigationType 기타. 컴파일러가 평범한 오래된 정수로 압축합니까? 예. 그러나 열거 형의 순서를 변경하거나 장래에 특정 정수를 지정하는 경우 올바른 방법을 사용하면 격리가 유지됩니다. –