와나 진짜 올해들어서 젤 열받고 짜증나네요. > 십년전오늘

십년전오늘

10년전 추억의 책장을 넘기며

와나 진짜 올해들어서 젤 열받고 짜증나네요. 정보

와나 진짜 올해들어서 젤 열받고 짜증나네요.

본문

안드로이드+웹뷰(웹페이지는 jquery mobile) 작업인데
둘다 이번 회사 프로젝트에서 처음 다루는거라 초보나 다름없는데
몇일간 아주 열심히 공부하면서 해서 다 작업하고
딱 하나, 웹뷰안에 jquery mobile 페이지에서 버튼에 링크를 걸어서
안드로이드에 미리 만들어놓은 mp4 플레이어를 플레이시키는 작업이었는데요.
일단 결론부터 말씀드리면 5시간만에 좀전에 해결은 했습니다.
근데 해결을 하고 나서도 원통함을 참을수가 없네요.

view.html페이지
function test(cstr){
        window.androidJS.callTest(cstr);   
    }
그냥 여기서 test() 함수 호출해서 안드로이드 액티비티에 미리 만들어둔(단독으로 구동 잘되는거 확인 이미 예전에 했던) 스크립트 호출하면 되는건데

list.html에서 jquery mobile의 예제소스 그대로 <a href=view.html>로, 아주 일반적인 방법으로 view.html로 이동하고나서 위 버튼을 클릭하면 먹히지를 않는겁니다.
근데 또 이상한건요.
앱상에서 다이렉트로 view.html을 호출해서 버튼을 클릭하면 mp4 플레이 잘되는데,
꼭 list.html을 거쳐서 a href로 view.html로 이동하고나서 버튼을 클릭하면 먹히지를 않는겁니다!!!
(일단 혹시나 안드로이드에 있는 자바소스가 잘못되었을까봐 이런저런 다른 방법의 자료 찾아보고 적용해보고 하느라 3시간 30분 소비. 딱 이 현상 찾아내는데 까지가 그러니까 3시간 30분)

이렇게도 해보고 저렇게도 해보다가
list.html 의 <a href=view.html> 이 부분을 <a href=# onclick="location.href='view.html';"> 딱 이렇게 바꾸고 view.html로 이동시키고나서 버튼 클릭하니까
그냥 잘 되는겁니다. 참내...

결국 안드로이드 자바소스는 애초에!! 애초에 잘못된게 없었는데 3시간 넘게 허비하고,
html도 진짜 여러가지로 이렇게도 바꿔보고 저렇게도 바꿔보고
jquery mobile 프레임워크 파일 여러가지 버전으로 바꿔도 보고 별짓 다하면서 또 1시간 30분 허비...
근데 결국 html소스상에도 애초에 문제는 없었고,
진정한 원인은 앵커 태그 대신 location.href를 쓰지 않았다는것!! 참 진짜 아무것도 아닌 이거였네요.

근데 제가 진짜 이게 제 실수 등으로 발생한 오류라고 지금도 도저히 인정을 못하겠는게..
아니 a href 랑 location.href 랑 차이가 뭡니까 진짜;;

설령 뭐 좀 차이가 있다고 하더라도 어차피 list.html파일에서는 view.html로의 페이지 링크외엔 아무 역할도 없었고, 정작 역할이 있는건 view.html 파일인데, a href로든 location.href로든 일단 view.html로 이동했으면 동등한 view.html 아닌가요?
도대체 뭐 차이가 있길래 제가 야밤에 회사 남아서 이 고생을 한걸까요 ㅠㅠ

뭐 글은 열받은 어조로 쓰긴 썼지만, 그래도 해결은 지은 상태이기 때문에 뭐 실제로 화가 난건 아니구요.
그냥 a href와 location.href 의 차이만 알고 싶습니다.
음...얼추 짐작가는걸로는 일반 웹상에선 차이가 없는걸로 알고 있는데, jquery mobile의 listview 하에서만 차이가 있는것 같다는 느낌이 들긴 하는데...정확한 이유를 알고 계신분은 답변 좀 부탁드립니다.


  • 복사

댓글 전체

아, 좋은 글 잘보고, 잘 배우고 갑니다. get 과 set 의 차이랍니다.

a href can get the document.URL, but you can not set it. You can both get and set the document.location.href.

a href 는 get 하지, set 하지는 않는다.  이런 미묘한 차이가 있었군요...

저는 일단 뭐 안되는거 있으면, 요기로 고고씽 합니다.

http://stackoverflow.com/

시간적으로 엄청나게 절약이 되더라구요.

아.. 근데 끈기가 무척 존경스럽습니다.  3시간 반이요??? 헐...  저는 10분 해보고 뭐 안되면 무조건 친구들한테 help me here assholes (ㅆ ㅂ, 나좀 도와줘) 이러는데...

10분씩이나 삽질해도 안되는거는 이건 도움이 필요한거다, 이렇게 결론을 짓기때문에..
늦은 시간에 답변 주셔서 감사합니다.
get과 set에서 set은 좀 생소하네요. 말씀하신 get도 제가 알고있는 get이 아닐수도 있고...제 스스로 get, set에 대해서는 좀 더 찾아보도록 하겠습니다.
ㅎㅎ 그리고 끈기라기보다는.. 주위에 물어볼 사람도 없고, 해결은 해야되고, 친구도 없어서 ㅎㅎ 음...회피가 불가능한 끈기네요 ㅎㅎ
피곤해 죽겄습니다;
제이쿼리 모바일의 문제에요.
a href 를 제이쿼리모바일이 새롭게 바꿔버려요.(자동으로) 즉 a href 동작이 이루어지지 않는거죠.
location.href 는 제이쿼리모바일이 손대지 않습니다. 즉 원하는 작업이 일어나요.
동작결과로 볼때 location.href 와 a href 는 동일합니다.

약간 더 깊게보자면 유저의 클릭시 onclick 이 먼저일어나고 a href 가 해석됩니다.
onclick 에서 href 해석을 막을 수도 있어요. 그리고 location.href 는 location 객체의 속성을 변경시켜서 억지로 이동하는 비정상적인 방법이기때문에 페이지 referer를 전달하지 않지만 요즘에 전달하는 브라우저도 있습니다.(크롬은 location.href 도 referer 전달)
윗분 말씀대로 jquery mobile 의 특성때문인것 같구요 , 정확한 해결법으로는
해당 a 태그에 data-ajax="false" 를 추가해보심이..
그러면 onclick 말고 href 어트리뷰트만으로도 실행가능할거에요~
© SIRSOFT
현재 페이지 제일 처음으로