2011-05-04 2 views
0

런타임시 내 Xul 응용 프로그램에 스크립트를 추가하려고합니다.런타임에 스크립트를 추가하는 방법은 무엇입니까? (document.write는 함수가 아닙니다)

document.write('<script type="text/javascript" src="chrome://myapp/content/myscript.js"/>'); 

Error: document.write is not a function

함수가 in the docs로 존재합니다.

document.open(); 
document.write("<h1>Out with the old - in with the new!</h1>"); 
document.close(); 

그러나 나는 다음과 같이 나타났습니다.

document.open is not a function

어떤 아이디어가 잘못된 것입니까?

- 갱신

아마 javacript 모듈에 js 코드를 넣고 Components.utils.import으로 가져올 수 있습니다 (리소스를 넣을 위치와 참조 방법 찾기)

+0

'문서'를 다시 정의하는 범위 수준의 코드에 무엇이 있습니까? 예를 들어, 실제 '문서'변수를 숨기는 로컬 변수입니까? – Tejs

+0

@Tejs 아니, 아니 어디. 문서가 원래 문서입니다. –

답변

0

document.write 기능 XHTML을 사용하는 경우 사용할 수 없습니다. 참조 : http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite. XHTML을 사용하고있는 것 같습니다.

실제로 XHTML을 사용해야하는지 여부를 평가해야합니다. 그렇지 않은 경우 document.write을 사용할 수 있습니다. 그러나 그렇게한다면, DOM을 조작하기 위해 대체 접근법을 사용해야 할 것입니다. DOM 메소드를 사용하여 직접 수행하거나 jQuery와 같은 도우미 라이브러리를 사용할 수 있습니다.

+0

잘 모르겠지만 Xul이 XHTML 언어라고 생각합니다. DOM 메서드 사용에 대해서는 확실하지 않지만, 내가하는 일이라고 생각합니다. 그렇지 않습니까? –

+0

아, 죄송 합니다만, XUL을하고 있다는 사실을 놓쳤습니다. 나는 그것이 같은 제한을 조건으로한다고 생각한다. Timofey의 대답은 올바른 방향으로 나아가 야합니다. link (1) 예제는 getElementById()를 사용하여 기존 요소를 찾은 다음 그 뒤에 새로운 요소를 추가합니다. –

0

this example.

Using the createElement method in XUL lets you accomplish things similar to document.write in HTML, with which you can create new pages and parts of a web page.

+0

document.body에 추가하려고하면'document.body is undefined'가 있습니다. window.appendChild (이것은 [doc이 말하듯] (https://developer.mozilla.org/en/xul/window)처럼 상속 된 메서드입니다)를 사용하면'window.appendChild is not a function'을 얻었습니다. 어떤 아이디어가 여기에 잘못 될 수 있습니까? –

0

스크립트 태그 안에 javascript가 있습니까? 그리고 코드의 어딘가에서 함수를 시작합니까? 그것은 스스로 실행하지 않습니다.

이 작동 :

<html> 
<head> 
<script type="text/javascript"> 
function addCont(){ 
document.open(); 
document.write("<h1>New text</h1>"); 
document.close(); 
} 
</script> 
</head> 
<body onload="addCont()"> 
<p>Some text...</p> 
</body> 
</html> 
+0

예, 스크립트 태그 안에 js가 있습니다. 그리고 onload 메소드의 setTimeout에 함수를 호출합니다. 이게 효과가 있지 않니? –

+0

문서에 스크립트 태그를 추가했기 때문일 수 있습니다. –

+0

http://stackoverflow.com/questions/236073/why-split-the-script-tag-when-writing-it-with-document-write –

0

당신은 당신 자체가 온로드에 있던에서는 setTimeout에서 호출 함수에서 document.write를()를하고 있던 다른 답변의 댓글에서 말했다. 페이지가로드 된 후 document.write()를 사용하지 말 것을 권장합니다. 모질라 DOCO에 따르면 :

an automatic document.open() call happens when document.write() is called after the page has loaded, but that's not defined in the W3C specification.

때문에 당신이 document.write를 사용하면 IE의 이전 버전은 단지 오류를 준 생각

메모리에서

If a document exists in the target, this method clears it

자동 document.open()의

() 페이지가로드 된 후,하지만 난 그들의 doco에서 아무것도 찾으려고 귀찮게 수 없습니다.

누군가 언급했듯이 xhtml에서는 작동하지 않습니다.

왜이 인스턴스에서 document.write()를 수행 하시겠습니까? 스크립트를 직접 포함하지 않는 것이 어떻습니까?

+0

창을 열거 나로드하는 데 너무 오래 걸리므로 원합니다. 일부 스크립트는 사용자가 해당 창에서 해당 기능을 요청한 경우에만로드 될 수 있습니다. 그리고 페이지가로드 된 후에 호출하고, 전에 내 목표에 도움이되지 않을 것이라고 전화를 더 잘 스크립트를 포함 할 것입니다 .. :) –

0

런타임에 스크립트를 동적으로로드하는 두 가지 방법이 있습니다.

첫 번째 방법은 subscript loader입니다.

두 번째 방법은 스크립트를로드하고 동적으로 load the overlay을 오버레이로 만드는 것입니다.

관련 문제