2012-02-21 1 views
3

웹 사이트의 모든 링크 중 목록/컬렉션/배열/모든 것이 필요합니다. 현재 window.content.document.links를 사용하고 있지만 모든 웹 사이트에서 작동하지는 않습니다. (해당 웹 사이트는 빈 배열을 생성합니다.) (예 : dctp.ws) 그 사이트에는 프레임이 포함되어 있기 때문입니다. 프레임 내부의 링크에 액세스 할 수있는 방법이 있습니까?JavaScript의 웹 사이트에서 모든 링크의 배열을 얻는 방법

또한 FireGestures 스크립트이기 때문에 "브라우저 내부에서 실행"됩니다. 나는 브라우저가 이미 그것을 다운로드하고 파싱했기 때문에 웹 사이트 또는 그와 유사한 것을 다운로드하고 싶지 않다.

+0

타사 웹 사이트 또는 귀하의 사이트 링크가 필요합니까 ?? –

+0

타사 웹 사이트 –

답변

5

는이 같은 getElementsByTagName를 사용하여 문서에서 모든 a 요소 NodeList를 얻을 수 있습니다. 프레임에 액세스하려면 window.frames pseudo-array을 사용할 수 있습니다. 각 항목은 그래서, 그 프레임의 window 객체입니다

var listInFrame = window.frames[n].document.getElementsByTagName("a"); 

그래서, 빈 배열을 만들 문서 자체의 요소를 추가 한 후 자신의 문서에서 링크를 추가 창문을 통해 루프.

저는 FireGestures에 익숙하지 않아 실행되는 스크립트에 Same Origin Policy이 적용되는지 잘 모릅니다.


업데이트 : 아래 귀하의 의견에서, 그것은 는 SOP에 될 수 있습니다 FireGesture 스크립트처럼 들린다. 따라서 FireGestures 스크립트에서 다른 출처의 문서 내용에 직접 액세스 할 수 없습니다.

FireGesture와 GreaseMonkey를 결합하여 작업을 수행 할 수 있습니다. GreaseMonkey는 GM_xmlhttpRequest이라는 API 호출을 사용하여 SOP   —을 무시하지만 또 다른 GET임을 알기를 원한다고 이미 말한 메모리의 페이지 사본을 읽지는 않을 것입니다. 불행히도 FireGestures로 원하는 것을 할 수 없을 수도 있습니다. 직접 추가 기능을 작성해야하며 관련 권한을 요청해야 할 수도 있습니다.

+0

그건 작동하지 않습니다. 파이어 폭스의 개발자 콘솔은 "권한이 속성 '문서'에 액세스하는 것을 거부했으며 FireGestures 스크립트로 빈 배열을 생성합니다. –

+0

@Rawing : 업데이트를 참조하십시오. FireGesture로하고 싶은 것을 할 수없는 것처럼 들립니다. –

+0

자세한 업데이트를 보내 주셔서 감사합니다.하지만 너무 복잡하거나 복잡하게 만들고 싶지는 않습니다. 따라서 GreaseMonkey를 사용하는 대신 포기할 것입니다. –

1

document.getElementsByTagName('a')을 사용할 수 있습니다.

이것은 정확히 같은 소리입니다 - 페이지의 a 개 중 NodeList 개를 가져옵니다.

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

그래서 주 문서에 대해 그렇게 할 것, 그리고 문서의 모든 프레임 :

+0

그건 document.links와 똑같은 일을합니다. 빈 배열을줍니다. –

관련 문제