WebView (또는 WebFrame)의 모든 링크를 절대 경로로 취급하도록 강요 할 수 있습니까?

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

문제

그래서 저는 WebKit의 WebView 및 WebFrame과 함께 일하고 있습니다. 사용자 정의 NSURLPROTOCOL을 사용하여 데이터베이스에서 각 요청에 대해 HTML을 검색합니다. 문제는 HTML의 링크가 모두 절대적이어야 할 때 상대적이라는 사실에서 발생합니다. 예를 들어 페이지입니다

foo/bar.html

그 안에 링크가있을 수 있습니다

foo/baz.html

문제는 링크가 상대적이기 때문에 요청이

/foo/foo/baz.html

지금까지 나는 두 개의 URL을 비교하고 공통 접두사를 벗기고 (이 경우 'foo/') foo/baz.html을 남겨 두어 이것을 해결하려고 노력했습니다. 그러나 특히 경로에 여러 디렉토리가있을 때 모든 가능성에 효과가있는 것은 아닙니다. 나는 "didstartProvisionAlloadforframe :"내 WebView의 FrameloadDelegate의 메소드 에서이 작업을 수행합니다.

불행히도, 나는 내가 표시하는 HTML을 제어 할 수 없으므로 링크 자체를 수정하는 것은 옵션이 아닙니다.

도움이 되었습니까?

해결책

메인 프레임의 리소스로드 대의원이되어 구현하십시오. webView:resource:willSendRequest:redirectResponse:fromDataSource: 요청중인 URL을 수정합니다. 보내다 relativeString 원래 상대 URL을 얻기 위해 요청의 URL에 -[NSURL initWithString:baseURL:] 올바른 기본 URL에 대해 동일한 상대 문자열로 새 URL을 생성합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top