admin post

구글 리더 서비스 종료 때문에 매인으로 쓰는 RSS 리더를 구글 리더에서 Netvibes로 갈아탔다. 그리고 보조로 한RSS와 The Old Reader를 쓰고 있다. 그리고 얼마 전부터 맥을 쓰게 되어 웹 브라우저도 사파리를 주로 쓰게 되었다. 사파리에서도 오페라나 파이어폭스나 크롬을 쓸 수 있지만, 사파리의 더블 탭 투 줌이나 읽기 도구가 참 마음에 들어서, 그걸 지원하지 않는 다른 브라우저가 불편해졌다. 그리고 트랙패드로 페이지를 확대/축소할 때 애니메이션을 사파리가 가장 부드럽게 처리를 해준다. 다른 브라우저에서는 버벅거리는 느낌이 든다.

나는 웹 페이지가 로딩되는 동안에도 끊임없이 뭔가를 읽기를 선호하기 때문에, 페이지를 이동하거나 새 탭을 띄울 때는 백그라운드 탭으로 띄우는 것을 좋아한다. 구글 리더를 쓸 때에는 새로운 글을 백그라운드 탭으로 띄우기 위해서 사파리 전용 확장을 썼다. 하지만 이제 RSS 리더를 바꾸었기 때문에 더는 이 방법을 쓸 수 없어 다른 방법을 고안해냈다.

일단 적용하는 방법부터 얘기하자면, 사파리의 북마크 관리 창을 열어서, 북마크 바에 다음을 추가한다. 이름은 아무거나 지어주면 되고, 주소란에 아래 코드를 입력해주면 된다.

javascript:(function(){var w=window;if(typeof w.originalOpen=='undefined'){w.originalOpen=w.open;w.open=function(){var w2={document:{location:arguments[0]},close:function(){},focus:function(){}};w2.i=setInterval(function(){var l=w2.document.location,d=document,t=true,f=false;if(l!='about:blank'){var a=d.createElement('a'),e=d.createEvent('MouseEvents');a.href=l;e.initMouseEvent('click',t,t,w,0,0,0,0,0,f,f,f,f,1,null);a.dispatchEvent(e);clearInterval(w2.i);}},100);return w2;}}})();

그리고 원하는 사이트(RSS 리더 사이트)에 들어가서 페이지 로딩이 끝나면 북마크 바에 추가한 북마크를 클릭해준다.

그러면 페이지 열기 단축키를 눌렀을 때 백그라운드 탭으로 페이지가 열린다. 다만, 한 가지 아쉬운 점은, RSS 리더 사이트 탭을 닫아버리면 다시 방문할 때 북마크를 또 눌러줘야 한다. 그리고 문제점으로, window.open()을 아예 안 쓰는 방법으로 바꿔버려서, 사이트에서 저 함수를 호출하고 리턴값을 사용할 경우 문제가 생길 수 있다. 구글 리더와 한RSS에서 이 리턴값을 사용한다. 그래서 두 사이트에 맞춰서 예외처리를 해줬다. 그 외의 사이트에서 사용할 경우 오작동 할 수도 있다.

이걸 만드는 과정을 좀 더 얘기해보자면, 예전에 오페라에서 썼던 방식을 참고해봤는데, 새로 뜬 탭을 blur() 하는 방식으로는 동작을 안 하더라. 대신 새 창을 띄워준 탭을 focus() 하는 방식으로 하니 되긴 되더라. 그런데 새 창으로 포커스가 한 번 이동 했다가 다시 예전 창으로 돌아와서 화면이 번쩍거리는 문제점이 있다.

그래서 좀 더 찾아봤는데 임의로 마우스 클릭 이벤트를 생성하는 방법이 있더라. 이 방식으로 마우스 가운데 버튼 클릭 이벤트를 발생시켰다.

그리고 매 번 북마크를 실행하는게 아닌, 자동으로 실행하기 위한 방법으로 NinjaKit을 써봤는데, 다른 스크립트는 잘 동작하나 window.open 함수를 재정의하는 게 안 되었다. 심지어 NinjaKit의 스크립트 안에서 확인해보면 재정의되어 있는 것 처럼 보이지만, 실제로는 동작하지 않는다. 아마 사파리에서 막거나, 실행 영역이 구분되어 있는 것 같다.

NinjaKit과 비슷한 기능을 한다는 GreaseKit을 설치해봤는데 스크립트 추가가 안 돼서 포기. 2008년 이후로 버전업이 안 되어 더 이상 사파리랑 호환이 안되나 보다.

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST