2011-03-25 9 views
3

내가 그 자신의 자바 스크립트 기능을 가진 iframe이있는 html 페이지가 있다고 가정 해 보겠습니다.북마크릿을 사용하여 iframe 내부에서 javascript 함수를 수정하는 방법은 무엇입니까?

function foo(){ 
//doSomething 
} 
  • 웹 브라우저는 메인 페이지로 지적된다.
  • 기본 페이지와 iframe 모두 동일한 도메인에 입니다.

주소 표시 줄에서 해당 기능에 액세스/호출 할 수 있습니다.

javascript:document.getElementById('iframe').contentWindow.foo(); 

주소 표시 줄에 새 기능 정의를 입력하여 주 페이지의 js 기능을 바꿀 수 있습니다. 그러나 iframe 내부의 함수에서는 작동하지 않습니다.

javascript:function foo(){//doSomethingElse} 

이것은이 기능을 기본 페이지에만 추가하는 것 같습니다. iframe은 여전히 ​​자체 foo 함수를 사용합니다.

새 탭에서 iframe을 열면 기능을 수정할 수 있습니다. iframe 내부의 js 함수를 기본 페이지의 주소 표시 줄에 입력하여 대체 할 수 있는지 궁금합니다.

+0

흥미로운 질문하지만 ... 나는 그런 비틀기의 사용에 대한 그냥 궁금 해요. 왜 그걸 할거야? – Johnny5

+0

별도의 탭에서 해당 프레임을 열지 않고도 기존 자바 스크립트 코드를 재사용 할 수있는 북마크릿을 통해 웹 페이지에 기능을 추가/수정하려는 경우 유용 할 수 있습니다. – Alexander

답변

0

다음을 시도해 보면 foo를 변수로 취급하고이를 함수 참조 (또는 ... 내 javascript가 최고가 아닌 것)로 지정합니다. enclosing()()은 반환 값이 무시되고 페이지가 다시로드되지 않도록하기위한 것입니다. (파이어 폭스에서 테스트)

javascript:(document.getElementById('iframe').contentWindow.foo=function(){alert('bar');})() 

관련 문제