헤드에 div를 넣고 display : none을 표시하면 JavaScript를 사용하여 표시하는 것보다 작동합니까?
편집하다:
AJAX에 물건을로드했습니다. 그리고 내 AJAX가 사이트의 "메인"부분을 변경함에 따라 메타 태그도 변경하고 싶습니다.
헤드에 div를 넣고 display : none을 표시하면 JavaScript를 사용하여 표시하는 것보다 작동합니까?
편집하다:
AJAX에 물건을로드했습니다. 그리고 내 AJAX가 사이트의 "메인"부분을 변경함에 따라 메타 태그도 변경하고 싶습니다.
답변:
예, 할 수 있습니다.
몇 가지 흥미로운 사용 사례가 있습니다. 일부 브라우저와 플러그인은 메타 요소를 구문 분석하고 다른 값에 대한 동작을 변경합니다.
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE">
<meta name="format-detection" content="telephone=no">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
이것은 JavaScript로 변경할 수 있습니다. 참조 : iPhone 뷰포트 배율 버그 수정
일부 사용자 에이전트 (예 : Opera)는 책갈피에 대한 설명을 사용합니다. 여기에서 개인화 된 콘텐츠를 추가 할 수 있습니다. 예:
<!DOCTYPE html>
<title>Test</title>
<meta name="description" content="this is old">
<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.js'></script>
<button>Change description</button>
<script type='text/javascript'>
$('button').on('click', function() {
// Just replacing the value of the 'content' attribute will not work.
$('meta[name=description]').remove();
$('head').append( '<meta name="description" content="this is new">' );
});
</script>
그래서 그것은 단지 검색 엔진에 관한 것이 아닙니다.
keywords
및 description
.
document.write
헤더 에서만 그렇게 할 수 있다고 생각합니다. Skype가 이미 DOM을 망칠 것이기 때문에 페이지가로드되면 변경하기에는 너무 늦었습니다. 끔찍한 일입니다!
$('meta[property="og:title"]').replaceWith('<meta property="og:title" content="New Title">');
const meta = document.querySelector('meta[name=theme-color]'); meta.setAttribute("content", colors[slideIndex]);
Android의 Chrome이 업데이트를 감지하고 색상을 변경합니다
네, 그렇습니다.
예 : 메타 설명을 설정하려면 :
document.querySelector('meta[name="description"]').setAttribute("content", _desc);
property
속성이 아닌 속성 을 쿼리해야하는 것 같습니다 name
. 즉meta[property="og:title"]
다음과 같은 것을 사용합니다 (jQuery 사용).
$('meta[name=author]').attr('content', 'New Author Name');
그러나 메타 태그는 일반적으로 JavaScript를 실행하지 않고 문서가로드 될 때만 스크랩되기 때문에 대부분 의미가 없습니다.
$('meta[property=og:somestuff]')
콜론으로 인해 jQuery 선택 구문과 충돌 할 것으로 의심되는, 같은 선택자에서도 작동합니다 .
예를 들어 다음과 같이 jQuery 호출을 사용하여 메타를 변경할 수 있습니다.
$('meta[name=keywords]').attr('content', new_keywords);
$('meta[name=description]').attr('content', new_description);
Google이 및 호출을 통해 ajax 콘텐츠를 인덱싱 할 것이라고 말했기 때문에 지금 은 중요 하다고 생각 합니다. 그리고 지금은 수 (참조, 헤드리스 브라우저, 심지어 자동으로 페이지가 위에서 언급 한에 링크 'HTML 스냅 샷 생성'을)를 확인 나는 그것이 하드 코어 SEO들에 대한 방법이라고 생각 때문에.#!hashes
_escaped_fragment_
자바 스크립트를 사용하여 페이지의 메타 태그를 변경할 수 있습니다. 다음은 Javascript 전용 접근 방식입니다.
document.getElementsByTagName('meta')["keywords"].content = "My new page keywords!!";
document.getElementsByTagName('meta')["description"].content = "My new page description!!";
document.title = "My new Document Title!!";
Google이 위의 코드에 대해 이러한 클라이언트 측 변경 사항에 대해 색인을 생성 함을 확인했습니다.
element = collection[name]
구문 을 알려 주셔서 감사 합니다.
메타 태그는 dom의 일부이며 액세스 할 수 있으며 변경 될 수 있습니다.하지만 검색 엔진 (메타 태그의 주요 소비자)은 자바 스크립트가 실행되지 않으므로 변경 사항을 보지 못합니다. 그래서 브라우저에 영향을 미치는 메타 태그 (새로 고침이 떠오른다)를 변경하지 않는 한, 이것은 거의 쓸모가 없을 수 있습니까?
다음과 같이 가능해야합니다 (또는 $('meta[name=author]').attr("content");
다음 과 같은 jQuery 사용 ).
<html>
<head>
<title>Meta Data</title>
<meta name="Author" content="Martin Webb">
<meta name="Author" content="A.N. Other">
<meta name="Description" content="A sample html file for extracting meta data">
<meta name="Keywords" content="JavaScript, DOM, W3C">
</head>
<body>
<script language="JavaScript"><!--
if (document.getElementsByName) {
var metaArray = document.getElementsByName('Author');
for (var i=0; i<metaArray.length; i++) {
document.write(metaArray[i].content + '<br>');
}
var metaArray = document.getElementsByName('Description');
for (var i=0; i<metaArray.length; i++) {
document.write(metaArray[i].content + '<br>');
}
var metaArray = document.getElementsByName('Keywords');
for (var i=0; i<metaArray.length; i++) {
document.write(metaArray[i].content + '<br>');
}
}
//--></script>
</body>
</html>
$(document).ready(function() {
$('meta[property="og:title"]').remove();
$('meta[property="og:description"]').remove();
$('meta[property="og:url"]').remove();
$("head").append('<meta property="og:title" content="blubb1">');
$("head").append('<meta property="og:description" content="blubb2">');
$("head").append('<meta property="og:url" content="blubb3">');
});
jQuery('meta[property="og:title"]').attr('content', "blubb1");
var metaTag = document.getElementsByTagName('meta');
for (var i=0; i < metaTag.length; i++) {
if (metaTag[i].getAttribute("http-equiv")=='refresh')
metaTag[i].content = '666';
if (metaTag[i].getAttribute("name")=='Keywords')
metaTag[i].content = 'js, solver';
}
더 간단하고 가벼운 솔루션을 사용할 수 있습니다.
document.head.querySelector('meta[name="description"]').content = _desc
각 메타 태그 예제에 대한 간단한 추가 및 div 속성
<meta id="mtlink" name="url" content="">
<meta id="mtdesc" name="description" content="" />
<meta id="mtkwrds" name="keywords" content="" />
이제 예를 들어 일반 div 변경과 같습니다. n 클릭
<a href="#" onClick="changeTags(); return false;">Change Meta Tags</a>
jQuery를 사용한 함수 변경 태그
function changeTags(){
$("#mtlink").attr("content","http://albup.com");
$("#mtdesc").attr("content","music all the time");
$("#mtkwrds").attr("content","mp3, download music, ");
}
아니요, div는 헤드 요소가 아니라 본문 요소입니다.
편집 : 그렇다면 SE가 얻을 수있는 유일한 것은 ajax 수정 된 것이 아닌 기본 HTML입니다.
예, 자바 스크립트로 메타 태그를 추가 할 수 있습니다. 나는 내 예에서했다
그러나 나는 그것을 제거하고 그것을 변경하는 방법을 모른다. Btw, 내 예에서 .. '추가'버튼을 클릭하면 태그가 추가되고 뷰포트가 각각 변경되지만 되 돌리는 방법을 모르겠습니다 (Android에서 제거) .. Android 용 방화 버그가 있었으면 좋겠습니다. 나는 무슨 일이 일어나고 있는지 보았다. Firefox는 태그를 제거합니다. 누구든지 이것에 대한 아이디어가 있다면 내 질문에 적어주세요.
색인에 포함
<link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/>
ajaxfiles og : type "og : title"og : description 및 og : image에 있습니다.
그리고 이것도 추가하십시오
<link rel="origin" href={http://yourPage.com}/>
그런 다음 ajaxCall 뒤에 js를 추가하십시오.
FB.XFBML.parse();
편집 : 그런 다음 txt / php douments에서 올바른 제목과 이미지를 페이스 북에 표시 할 수 있습니다 (내 이름은 확장자로 .php이지만 더 많은 txt 파일 임). 그런 다음 이러한 파일에 메타 태그가 있고 모든 문서의 색인에 대한 링크가 있으며 모든 하위 파일에 대한 색인 파일의 메타 링크도 있습니다.
누구든지 이것을하는 더 나은 방법을 알고 있다면 어떤 추가 사항을 고맙게 생각합니다. :)
이것은 약간의 변화없이 모바일과 다른 브라우저 모두에서 실행되어야하는 약간 엄격하게 기하학적으로 설정된 앱에서 작동하는 것처럼 보이므로 모바일 / 비 모바일 브라우저 상태를 찾고 모바일의 경우 뷰포트를 장치 너비로 설정해야합니다. 헤더에서 스크립트를 실행할 수 있으므로 헤더의 아래 js는 페이지가로드되기 전에 장치 너비에 대한 메타 태그를 변경하는 것 같습니다. navigator.userAgent의 사용은 실험적인 것으로 규정되어 있습니다. 스크립트는 변경하려면 메타 태그 항목을 따라야하므로 일부 초기 콘텐츠를 선택한 다음 조건에 따라 변경해야합니다.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script>
var userAgentHeader = navigator.userAgent ;
var browserIsMobileOrNot = "mobileNOT" ;
if( userAgentHeader.includes( "Mobi" ) ) {
browserIsMobileOrNot = "mobileYES" ;
//document.querySelector('meta[name="viewport"]').setAttribute( "content", "width=device-width, initial-scale=1.0" );
} else {
browserIsMobileOrNot = "mobileNOT" ;
document.querySelector('meta[name="viewport"]').setAttribute( "content", "");
}
</script>
<link rel="stylesheet" href="css/index.css">
. . . . . .