Amazon で商品を購入しいるみなさま
(このページを見ている人はきっと、みんな使っていますよね)

Amazon で商品を購入するとき、 販売元 とか気にしていますか?
仕組みは分かりませんが、価格が最安値 になっている 販売元
優先的に表示 されているのかと思っています。

私の場合、商品の製造元 もしくは、Amazon
もしくは、信頼している販売元 であるかを確認して購入しています。


でも、販売元 を切り替えるのは面倒ですよね。
そこで、販売元を Amazon に切り替える Chrome拡張機能
Sold by amazon を作成してみました。

(同名の拡張機能があるので、名前で検索するときは、注意してくださいね。)


商品の製造元信頼している販売元 に切り替える機能を作るのは、
さすがに難しいので、こちらは断念しました。
  1. 商品の製造元を確認する手立てがない
  2. 人によって信頼している販売元は違うし、
    信頼する販売元を登録するのも、ユーザーの手間になりますし


見出し画像
Sold by amazon は、
サポートされているすべてのAmazonサイトに、
'販売元:Amazon'リンクおよび、'短縮URL'リンクを追加します。

下記の2種類のURLタイプに対応しています。
  1. https://[Amazonドメイン]/[説明]/dp/ASIN/・・・
  2. https://[Amazonドメイン]/[説明]/gp/product/ASIN/・・・

どう表示されるかというと
下図を見てもらえば分かると思いますが、価格表示の上部に追加します。
(”リンク”と書かれた緑色の吹き出しの部分です。) sba_ja

おまけとして、商品名タイトルの後ろに、
短縮URLリンクも追加しています。

Amzaonで検索する時点で、制限する方法もありますが、

商品を検索してから、
Amazonから販売しているかを確認するほうが、
効率的だと思います。


また、この拡張機能により、商品購入直前に、
間違ってAmazon以外から購入してしまうリスクを軽減したり、
メールやSNSなどに転記しやすくなると思います。


ご活用いただければ、幸いです。
また、何かありましたら、コメントください。
















全部じゃないけど、ソースコード公開しますね。
これで少しは安心していただけますでしょうか。
function observeDOMChanges() {
    // 監視対象のDOM要素
    const targetNode = document.getElementById("ないしょ");
    if (targetNode == null) {
        return;
    }

    // (変更を監視する) オブザーバーのオプション
    const config = {
        childList: true,       // (boolean) 子ノードの追加・削除を監視するか
        subtree: true,         // (boolean) 監視対象の子孫ノードの変化も監視するか
    };

    // 変更が発見されたときに実行されるコールバック関数
    const callback = function (mutationsList, observer) {
        for (const mutation of mutationsList) {
            for (const node of mutation.removedNodes) {
                // 自動的に削除されているけど、念のため削除実施
                if (node.id == "ないしょ") {
                    removeAmazonLink();
                    removeShortUrlLink();
                }
            }

            for (const node of mutation.addedNodes) {
                if (node.id == "ないしょ") {
                    addShortUrlLink();
                    addAmazonLink();
                }
            }
        }
    };

    // コールバック関数に結びつけられたオブザーバーのインスタンスを生成
    const observer = new MutationObserver(callback);

    // 対象ノードの設定された変更の監視を開始
    observer.observe(targetNode, config);

    // 初期読み込み時の処理
    addShortUrlLink();
    addAmazonLink();
}

// ページが完全にロードされた後にオブザーバーを開始
if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', observeDOMChanges);
} else {
    observeDOMChanges();
}

// 短縮URLリンク 追加処理
function addShortUrlLink() {
    // URLが変わっていないことがある
    // 変わるまで、ごにょごにょ

    // 短縮URLのパス名を取得
    const newUrl= getUrlPathName();

    // リンクを追加する要素を取得
    let element = document.getElementById("ないしょ");

    // リンク
    let link = document.createElement("a");
    link.id = "ないしょ";
    link.textContent = "\u26b9"; // 短縮マーク
    link.href = newUrl.href;

    // title 配下に リンクを追加
    element.append(link);
}

// Amazonリンク 追加処理
function addAmazonLink() {
    // URLが変わっていないことがある
    // 変わるまで、ごにょごにょ

    // 短縮URLのパス名を取得
    const newUrl= getUrlPathName();

    // AmazonのmerchantIDを取得
    const id = getMerchantID();

    // search パラメーターを変更
    newUrl.search = "?m=" + id;

    // リンクを追加する要素を取得
    let element = document.getElementById("ないしょ");

    // リンク
    let link = document.createElement("a");
    link.id = ないしょ;
    link.textContent = getLinkText();
    link.href = newUrl.href;
    link.style.textDecoration = "underline";

    let div = document.createElement("div");
    div.id = ないしょ;
    div.style = "いろいろ設定";
    div.append(link);

    // element 配下の先頭に リンクを追加
    element.insertBefore(div, element.firstChild);
}