'webview'에 해당되는 글 1건

  1. 2011.01.19 mac이나 iphone의 webview에서 target이 _blank인 링크 띄우기

mac이나 iphone의 webview에서 target이 _blank인 링크 띄우기

|
mac이나 iphone개발을 하면 webview를 쓸 일이 종종있게 되는데
저도 오늘 그럴 일이 있었습니다.(저는 맥;;)

webview에서 링크를 눌러도 아무리 대답이 없는 링크가 있었으니...
쭈욱 추적을 하다 보니 안뜨는 링크는 아래와 같은 형태로... -_-;;

<a href="http://www.test.com" target="_blank">abcdefg</a>

즉... 팝업 링크였습니다.

mac이나 iphone의 webview는 너무나도 추상화(수많은 delegate;;)가 잘되어 있어서 이런건지 모르겠지만
찾아보니 역시나 팝업 링크는 웹뷰에서는 링크가 클릭이 된걸 웹뷰가 전환을 못한다고 되어있었네요.

이걸 그냥 자체의 웹뷰를 띄우던지 아니면 또 다른 웹뷰를 띄워서 보여주게 하려면 어느정도 코드를 바꿔야 합니다.

저 같은 경우는 웹뷰에서 특정 URL(제가 가고자 하는)만 웹뷰에서 보여지면 되고 나머지 링크는 웹브라우져로 띄워야 해서
target을 전부 _self로 변환시켜버렸습니다.

objective c 코드 안에서 변환시키는 방법도 있지만 아무리봐도 잘 이해가 잘 안되서

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame 에서 javascript를 실행해서

_self로 변경해버렸습니다.(iphone도 webview에 비슷한 delegate method가 있습니다. ㅎㅎ


방법은 아래와 같은 코드를 넣으면 되요~~


- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame

{

[sender stringByEvaluatingJavaScriptFromString:@"{\

var a = document.getElementsByTagName(\"a\"); \

for (var i=0; i<a.length; i++) \

a[i].target = \"_self\";\

}"];

}


위 처럼 페이지가 로딩이 끝났을 때 javascript를 끼워넣어서 실행을 시켜버리는 코드입니다.


코드는 다들 아시겠지만 단순히 전체 element들 중에서 a 태크를 찾아서 target attribute의 내용을 _self로 변경해버리는 코드입니다.

이렇게 하면 webview에서 _blank로 되어 있어 링크가 움직이지 않는 것도 움직이게 됩니다.


저는 그걸 잡아서 브라우저로 보내버렸구요... ㅎㅎ


And
prev | 1 | next