<head>요소에 대한 HTML 소스 편집을 방지하는 CMS로 작업하고 있습니다.
예를 들어 <title>태그 위에 다음을 추가하고 싶습니다 .
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta>태그가 무엇이고 어떤 브라우저가 관련되어 있는지에 따라 태그를 동적으로 추가해도 효과가 없을 수 있습니다.
<head>요소에 대한 HTML 소스 편집을 방지하는 CMS로 작업하고 있습니다.
예를 들어 <title>태그 위에 다음을 추가하고 싶습니다 .
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta>태그가 무엇이고 어떤 브라우저가 관련되어 있는지에 따라 태그를 동적으로 추가해도 효과가 없을 수 있습니다.
답변:
선택하여 정상적으로 추가 할 수 있습니다.
$('head').append('<link />');
jQuery
$('head').append( ... );
자바 스크립트 :
document.getElementsByTagName('head')[0].appendChild( ... );
...질문의 핵심 부분이라고 생각하지 않았기 때문에 그 부분을 남겼고 , 또한 글을 쓰는 시점에 그가 머리에 넣고 싶은 것에 대한 실습 예가 없었습니다. 하지만 예, DOM 요소 여야합니다.
innerHTML추가 필드 문자열을 연결하는 데 사용할 수 있습니다 .
document.head.innerHTML = document.head.innerHTML + '<link rel="stylesheet>...'
그러나 헤드에 추가 한 추가 항목이 첫 번째로드 후에 브라우저에서 인식된다는 것을 보장 할 수 없으며 추가 스타일 시트가로드 될 때 FOUC (스타일이 지정되지 않은 콘텐츠 플래시)가 표시 될 수 있습니다.
몇 년 동안 API를 살펴 보지 않았지만 document.write이러한 종류의 작업을 위해 설계된를 사용할 수도 있습니다 . 그러나 이렇게하려면 초기 AJAX 요청이 완료 될 때까지 페이지가 렌더링되지 않도록 차단해야합니다.
최신 브라우저 (IE9 +)에서는 document.head 를 사용할 수도 있습니다 .
예:
var favicon = document.createElement('link');
favicon.id = 'myFavicon';
favicon.rel = 'shortcut icon';
favicon.href = 'http://www.test.com/my-favicon.ico';
document.head.appendChild(favicon);
임시 요소 (예 DIV:)를 만들고 HTML 코드를 innerHTML속성에 할당 한 다음 자식 노드 를 HEAD요소에 하나씩 추가합니다 . 예를 들면 다음과 같습니다.
var temp = document.createElement('div');
temp.innerHTML = '<link rel="stylesheet" href="example.css" />'
+ '<script src="foobar.js"><\/script> ';
var head = document.head;
while (temp.firstChild) {
head.appendChild(temp.firstChild);
}
HEAD를 통해 전체 내용을 다시 쓰는 것과 비교할 때 innerHTML이는 요소의 기존 자식 요소 HEAD에 어떤 식 으로든 영향을주지 않습니다 .
참고 스크립트 스타일이 성공적으로 적용하는 동안이 방법으로 삽입 분명히, 자동으로 실행되지 않습니다. 따라서 스크립트를 실행해야하는 경우 Ajax를 사용하여 JS 파일을로드 한 다음 eval().
body이지만 head-tag 안에서 실제로 할 수 있습니까? 나는 인상 그에만 허용 태그 아래이었다 base, link, meta, title, style와 script?
DIV요소는 HTML 코드 구문 분석을 위한 임시 컨테이너입니다 . 당신은 삽입 안 DIV받는 그 자체를 HEAD. 하위 노드를 삽입해야합니다 . 답변에 추가 한 예를 참조하십시오.
temp." Node.firstChild () 문서를 참조하십시오 .
순수한 자바 스크립트를 사용해보세요.
라이브러리 JS :
appendHtml = function(element, html) {
var div = document.createElement('div');
div.innerHTML = html;
while (div.children.length > 0) {
element.appendChild(div.children[0]);
}
}
유형:
appendHtml(document.head, '<link rel="stylesheet" type="text/css" href="http://example.com/example.css"/>');
또는 jQuery :
$('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', 'http://example.com/example.css'));
jquery를 사용하면 다른 옵션이 있습니다.
$('head').html($('head').html() + '...');
어쨌든 작동합니다. 다른 사람들이 말한 JavaScript 옵션도 맞습니다.
.html()하면 모든 DOM 속성이 복구되지 않습니다 . (이 문제의 가장 일반적인 인스턴스이자 가장 눈에 띄는 것은 유사한 코드를 사용하여 양식에 새 필드를 추가하는 경우입니다. value 속성은 필드의 기본값을 나타내므로 가져 html()오고 다시 설정하면 기존의 모든 항목이 재설정됩니다. 필드를 기본값으로 변경).