2012-01-09 2 views
1

님과 님이 document.write()을 사용하지 말라고하셨습니다. innerHTML은 DOM을 직접 조작하는 것이 더 낫다.document.write()를 언제 사용합니까?

그러나 처음으로 페이지를로드 할 때 mysql 테이블에 저장된 내용이 있고 따라서 HTML로 변환되는 경우 어떻게해야할까요? 서버가이 작업을 수행하고 있습니까?

서버가 그랬다면 PHP 코드로 HTML을 생성하고 필요한 곳에 배치 할 수 있습니다.하지만 b.c. 나는 (그것이 HTML을 생성하지 않는 한, PHP, 미만 처리 시간에 의해 생성되는) Javasrcript (클라이언트)

<script type='text/javascript'>document.write(Arc.ViewHBookmark('google.com|http://www.google.com|Google||ideeli.com|http://www.ideeli.com|Ideeli||kikin.com|http://www.kikin.com|Kikin||lot18.com|http://www.lot18.com|Lot18||twitter.com|http://twitter.com|Twitter'))</script> 

이 내가 생성하는 클라이언트가 어떻게이 코드를 사용하는 HTML 렌더링 할 HTML 페이지가 다시로드됩니다. document.write()로 JavaScript를 포함합니다.

더 좋은 방법이 있나요? 더 나은 방법은 document.write()를 사용하지 않는 방법을 의미합니다.

onload 이벤트에서 HTML을 렌더링하는 javascipt 함수를 호출 할 수 있지만이 경우 JSON 데이터 나 이와 유사한 (AML)에 액세스 할 수있는 방법은 무엇입니까?

난 다음, 다시 읽어 컨텐츠를 생성하고, 다시 페이지를 작성하는 page..and로 쓸 수 ...하지만 이것은 단지 document.write()

을 사용하는 것보다 더 비효율적 보인다는 OK인가 이 경우 document.write()을 사용 하시겠습니까?

그렇지 않은 경우 구조화 된 데이터를 페이지에 쓰고 javascript로 변환하여 HTML로 변환하는 것이 좋습니다.

+0

I을 서버가 존재한다고 생각하는 것입니다 ... –

+2

요즘은 서버보다 훨씬 많은 브라우저에서 실패하는 것을 보았습니다. 자바 스크립트 처리를 늘리면 사용자의 웹 사이트 속도가 느려질 수 있습니다. 게다가 PHP는 JS보다 훨씬 뛰어납니다. – MrGlass

답변

1

물론, 데이터베이스 데이터를 보유하는 javascript 개체를 만든 다음 javascript 개체의 작성 방법에 따라 페이지를 렌더링하십시오.

+0

트래비스, DOM 요소를 생성하거나 텍스트를 작성하여 .innerHTML에 배치하는 것이 더 낫습니다. –

+0

글쎄, 정말 얼마나 많은 코드를 귀하의 자바 스크립트 소요됩니다 온다. DOM 객체를 생성 한 다음 그것을 삽입하는 함수를 사용하는 것에 대한 좋은 점은 여러 작업에 대해 사용할 수 있다는 것입니다.innerHTML 항상 문자열을 만들고 innerHTML 영역에 삽입하는 거대한 js 파일로 끝날 수 있습니다. 가장 좋은 방법은 중복성을 줄이는 것입니다. –

1

정확하게 무엇을 해야할지 Arc.ViewHBookmark은 정확히 알지 못하지만 HTML을 반환하는 것으로 보입니다. 따라서 대답은 간단합니다. HTML 문자열을 반환하는 대신 DOM을 직접 조작 (예 : 요소를 동적으로 추가)합니다. 그런 다음 document.write에 포장하지 않고 호출하십시오.

1

질문을 올바르게 이해하면 div (또는 문맥에 따라 span) 요소를 이제는 'script'요소가있는 빈 콘텐츠로 사용할 수 있습니다 (예 : 그 요소로 생성 된 컨텐츠를두고

<div id="foo"></div> 

다음 사용하는 자바 스크립트 :

document.getElementById('foo').innerHTML = Arc.ViewHBookmark(...); 

는 (당신은 당신이 div 요소 뒤에 놓습니다 script 요소에 그 예를 넣을 수 있습니다.)