2011-09-24 10 views
-1

페이지에서로드되기 전에 모든 HTML 개체 (img, iframe, 링크 등)를 재정의하는 전역 JavaScript 함수를 작성하려고했습니다. overlying 조치의 목적은 DOM을 다른 링크로 사용하여 이러한 객체의 SRCHREF을 변경하는 것이 었습니다.개체로드가 끝나기 전에 자바 스크립트에서 이벤트 트리거

불행히도 개체를 먼저로드 한 다음 onload 이벤트로 변경하지 않으면 해결 방법이 없습니다.

두 번째 옵션은 SRCHREF을 정규 표현식과 일치시키고 결과 값을 대체하여 변경하는 것이 었습니다. 나는 천천히하고 많은 시간을 소비하기 때문에 그렇게하지 않기를 바란다.

누군가가 그/그녀의 경험을 공유하고이 문제를 해결할 수 있다면 기쁠 것입니다.

+0

왜 자바 스크립트를 사용 하시겠습니까? – rlemon

+0

내가 작성한 적이없는 외부 페이지에 삽입 될 것이기 때문에 Javascript로 처리하고 싶습니다. 바쿠단 - 도움을 받고 싶지 않으면 괜찮습니다. –

+0

@ Niv Sela 귀하의 문제는 개념에 있습니다. 모든 대답은 제 의견을 잘 정리 한 것입니다. 여전히 존재하지 않는 무언가를 조작 할 수는 없습니다 - DOM을 조작해야합니다! 그래서 당신이 원하는 것은 불가능합니다. – Bakudan

답변

0

JavaScript는 DOM 내에서만 작동합니다.

그러나 AJAX를 통해 페이지를로드하고 내용을 가져 와서 임의의 문자열 조작을 수행 할 수는 있습니다.

+0

안녕하세요, 귀하의 의견을 보내 주셔서 감사합니다! 문제는 프록시를 통해 다운로드중인 외부 페이지에 스크립트를 포함시키고 자하는 것입니다. 필자는 모든 링크를 살펴보고 원하는 모든 작업을 수행 할 수 있지만 특별한 위협이나 구문 분석 기능을 필요로하지 않는 더욱 편리하게 뭔가를 찾고있었습니다. –

0

페이지의 정적 HTML에있는 항목을 수정하려는 경우 브라우저에서 성공적으로로드 할 때까지 javascript로 항목을 수정할 수 없습니다. 그 전에는 수정할 방법이 없습니다. 사용자가 수정하기 전에 시청자에게 표시되거나 표시되지 않을 수 있습니다.

이 문제를 해결하려면 몇 가지 옵션이 있습니다. 수정하려는 모든 항목을 일으키는 페이지에서

  1. 을 넣어 CSS 스타일 규칙은 처음에 숨겨하고 다음 자바 스크립트가 귀하의 수정 전에 볼 수 없습니다, 그래서 그들에게 보여 다음을 수정할 수 있습니다.
  2. 수정하려는 항목을 HTML 페이지의 정적 부분에 두지 마십시오. 자바 스크립트를 사용하여 프로그래밍 방식으로 생성하고 페이지에 삽입하거나 아약스를 통해로드하거나 아약스를 통해로드 한 후 수정 한 다음 페이지에 삽입 할 수 있습니다.

이러한 시나리오의 경우 javascript를 사용하지 않으면 대체 계획을 세워야합니다.

+0

안녕하세요, 여러분 께 감사드립니다. 첫 번째 옵션은 작동하지만 "BeforeLoading"이벤트를 무시하는 것과 같은 더 많은 로직을 찾고있었습니다. 두 번째 옵션은 처음부터 페이지를 만드는 사람이 아니기 때문에 가능하지 않습니다. –

+0

"BeforeLoading"이벤트가 없습니다. 브라우저는 그 기능을 제공하지 않습니다.그 이유 중 하나는 브라우저가 페이지로드의 일부로 점진적으로 표시한다는 것입니다. 따라서 페이지가로드되어 조작 할 수있는 단일 시점은 없지만 아직 표시되지는 않습니다. 그들은 개별 요소 (로드 될 때 표시되기 전에)에 대해 사용자에게 알리려고 할 수 있지만 그렇게하지 않으면 다소 복잡 할 수 있습니다. – jfriend00

+0

그래, 그게 내가 웃는 짓을하는 이유 야. 내 연구에 따르면 비슷한 애칭을 찾지 못했고 전문가의 질문에 이르렀습니다.) 페이지 내용을 파싱하여 처리 할 수 ​​있지만 매우 좋지 않습니다. 만약 당신이 100 % 정규식 처리를 사용하지 않음으로써 링크를 변경할 수있는 것에 익숙하다면 그것은 큰 것이 될 것입니다. 저는 (다음과 같은 정규 표현식을 썼습니다 (거의 90 %의 경우에 맞음) 아주 천천히 작동합니다. .. [^ \.] (href | src) \ s * = \ s * [ '| \ "] (https? : \/\ /)? [^ \ /] +/* (". # sim –

관련 문제