/ CHROME-EXTENSION

PDFかどうかで実行内容を分岐する

TL;DR

開いているサイトのMIMEを取得して判定すればよい.

document.contentType

MIMEとは

メディアタイプ (別名 Multipurpose Internet Mail Extensions または MIME タイプ) は、文書、ファイル、またはバイト列の性質や形式を示す標準です。 IETF の RFC 6838 で定義され、標準化されています。
https://developer.mozilla.org/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types

このページであればtext/html

実装例

background.jsBackgroundScript
content.jsContentScript
ここでは,現在みているサイトがPDFであるかどうかを判定する例を以下に示す.

  
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
  chrome.tabs.sendMessage(tabs[0].id, { message: "get_MIME" }, function (
    res
    ) {
       alert("MIME is "+ res):
      }
  });
});
  
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
  if (request.message == "get_MIME") {
    let res;
    if (document.contentType === "application/pdf") {
      res = true;
    } else {
      res = false;
    }
    sendResponse(res);//MIMEを返すなら res でなく document.contentType
  }
  return true;
});

解説

URLの末尾が.pdfで終わるかどうかすなわちurl.match(/.*.pdf$/)で一見するとよさそうだが,

https://tel.archives-ouvertes.fr/tel-01918263v2/document

このようなサイトに対応できない.そのため,MIMEによる判定が必要となる.

background.js

  • chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {}
    activeでアクティブなウィンドウを,currentWindowで現在フォーカスされているウィンドウを指定する.
    これは,複数ウィンドウを開いている場合を考慮している.

contents.js

  • document.contentTypeでMIMEを取得する.
    参考
teahat

teahat

I'm t3ahat.

Read More

Tags

Latest Posts