Chrome 페이지 번역으로 코드를 번역하지 않는 스크립트를 만드는 방법
할 일
Chrome 페이지 번역에 의해 잔인하게 번역되는 React 프로그램 ...
코드가 번역되어 버리는 것은 해당 부분을 HTML의 code 태그로 둘러싸지 않기 때문입니다.
이번은 이 사이트 의 코드가 기재되어 있는 부분을 code 태그로 랩 하는 간단한 JavaScript를 짜서, Chrome 개발자 툴의 consol로부터 실행해 대책해 보려고 생각합니다.
자바스크립트를 공부하는 데 도움이 되세요 🙋♂️
구현
1. 상황 파악
F12에서 검증 툴을 열고 내용을 들여다 보면, 역시 code 태그로 둘러싸여 있지 않은 것 같네요.
지금 이런 느낌인 것을,
<pre class="mdxCodeBlock_iHAB">
<div class="...">
...
</div>
</pre>
이렇게 하면 괜찮을 것 같습니다.
<pre class="mdxCodeBlock_iHAB">
+ <code>
<div class="...">
...
</div>
+ </code>
</pre>
2. 코딩
댓글이 달린 완성판
// スコープを汚染しないために即時関数で囲んでおく
(() => {
// 正規表現でclass名が 'mdxCodeBlock_' から始まるエレメントを全て取得
const codeBlockElements = document.querySelectorAll("[class^=mdxCodeBlock_]");
// エレメントごとに処理するためのループ
codeBlockElements.forEach((element) => {
// 子要素を削除する前に、コピーして残しておく
// 子要素は1つしかないので、children[0]でOK
// cloneNodeの引数は、deepcopyを有効にするか否か
const copiedChildren = element.children[0].cloneNode(true);
// 子要素を全削除
while (element.firstChild) {
element.removeChild(element.firstChild);
}
// codeエレメントを作成して、コピーしておいたエレメントをラップして元の場所に戻す
const wrapElement = document.createElement("code");
wrapElement.appendChild(copiedChildren);
element.appendChild(wrapElement);
});
})();
3. 적용
F12를 눌러 검증 도구를 열고 콘솔 탭으로 이동하여 이번 코드를 두드리십시오.
실행 후 제대로 코드 태그로 둘러싸여 있네요.
번역해도 코드는 안전합니다. (재로드 할 때마다 스크립트를 실행해야합니다)
요약
이런 느낌으로 똑같이 하면 다른 사이트도 대응 가능합니다. 일단 스크립트를 실행하는 것이 귀찮다면 Chrome 확장 프로그램을 직접 만들고 로컬로 적용하면 지속 가능합니다.
꼭 자력으로 해보세요! !
문서 개체 모델(DOM) - Web API | MDN
트위터 : @kzkzkazz
Reference
이 문제에 관하여(Chrome 페이지 번역으로 코드를 번역하지 않는 스크립트를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazzzzzz/items/28c973e8b4e74761c598
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1. 상황 파악
F12에서 검증 툴을 열고 내용을 들여다 보면, 역시 code 태그로 둘러싸여 있지 않은 것 같네요.
지금 이런 느낌인 것을,
<pre class="mdxCodeBlock_iHAB">
<div class="...">
...
</div>
</pre>
이렇게 하면 괜찮을 것 같습니다.
<pre class="mdxCodeBlock_iHAB">
+ <code>
<div class="...">
...
</div>
+ </code>
</pre>
2. 코딩
댓글이 달린 완성판
// スコープを汚染しないために即時関数で囲んでおく
(() => {
// 正規表現でclass名が 'mdxCodeBlock_' から始まるエレメントを全て取得
const codeBlockElements = document.querySelectorAll("[class^=mdxCodeBlock_]");
// エレメントごとに処理するためのループ
codeBlockElements.forEach((element) => {
// 子要素を削除する前に、コピーして残しておく
// 子要素は1つしかないので、children[0]でOK
// cloneNodeの引数は、deepcopyを有効にするか否か
const copiedChildren = element.children[0].cloneNode(true);
// 子要素を全削除
while (element.firstChild) {
element.removeChild(element.firstChild);
}
// codeエレメントを作成して、コピーしておいたエレメントをラップして元の場所に戻す
const wrapElement = document.createElement("code");
wrapElement.appendChild(copiedChildren);
element.appendChild(wrapElement);
});
})();
3. 적용
F12를 눌러 검증 도구를 열고 콘솔 탭으로 이동하여 이번 코드를 두드리십시오.
실행 후 제대로 코드 태그로 둘러싸여 있네요.
번역해도 코드는 안전합니다. (재로드 할 때마다 스크립트를 실행해야합니다)
요약
이런 느낌으로 똑같이 하면 다른 사이트도 대응 가능합니다. 일단 스크립트를 실행하는 것이 귀찮다면 Chrome 확장 프로그램을 직접 만들고 로컬로 적용하면 지속 가능합니다.
꼭 자력으로 해보세요! !
문서 개체 모델(DOM) - Web API | MDN
트위터 : @kzkzkazz
Reference
이 문제에 관하여(Chrome 페이지 번역으로 코드를 번역하지 않는 스크립트를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazzzzzz/items/28c973e8b4e74761c598
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Chrome 페이지 번역으로 코드를 번역하지 않는 스크립트를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazzzzzz/items/28c973e8b4e74761c598텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)