1

QR コードを使用して、Android スマートフォンで特定のフォーラムを効率的に閲覧したいと考えています。

フォーラム スレッドのすべての投稿のすべてのパーマリンクの横に QR コードを配置する Greasemonkey スクリプトを探しています。

YouTube の「共有」QR スクリプトから作業するためのテンプレートが少しあります。

var shareBoxCheckInterval   = setInterval (AddQR_Code, 200);

function AddQR_Code () {
var shareDiv    = document.querySelector ('.share-option-container .ytg-box');
if (shareDiv) {
    var qrIMG   = 'http://chart.googleapis.com/chart?chl=' 
                + window.location.href + '&chld=M%7C0&cht=qr&chs=125x125';
    var img     = document.createElement ('img');
    img.src     = qrIMG;
    img.width   = 125;
    img.height  = 125;
    shareDiv.appendChild (img);
    clearInterval (shareBoxCheckInterval);
    }
}

これが何をするかというと、次のように QR コードを Youtube の共有ボックスに追加します。

Qrコードのサンプル結果

PC から電話に簡単にビデオを転送できます。

フォーラムのパーマリンクで動作するようにこのコードを適応させ、リンクのテキストを QR コード画像に置き換えるにはどうすればよいですか?

たとえば、Minecraft フォーラムのこのスレッドでは、すべての投稿の右上に「#1」、「#2」、「#3」、無限に続く小さなリンクがあり、その特定の投稿にリンクしています。

ユーザースクリプトが行うことは、「#1」というテキストを、その投稿にリンクする QR コード画像 (Google API によって生成される) に置き換え、クリック可能なハイパーリンク画像 (その投稿にもリンクする) にすることです。

次に、ページ上のすべてのパーマリンクに対してこれを繰り返します。

これは可能でしょうか?

4

1 に答える 1

0

さて、これが投稿ブックマークをループしてQRコードを追加する完全なスクリプトです。

投稿番号は、私が使用するフォーラムで役立つので、残しておきました。本当に削除したい場合は$(this).text (" ");、行の直前に追加してください$(this).append (...

タグ属性(悪)ではなく、スタイリング(善)にCSSを使用していることに注意してください。

スクリプトは少し複雑でwithPages_jQuery、Google Chromeと互換性を持たせるための構造が必要です(タグで示されています)。

// ==UserScript==
// @name        _Minecraft Forum, post barcodizer
// @namespace   _pc
// @include     http://www.minecraftforum.net/topic/*
// @grant       GM_addStyle
// ==/UserScript==

function GM_scriptMain ($) {
    var postBkMarks = $("div.post_block div.post_wrap h3 span.post_id a");
    postBkMarks.each ( function () {
        var qrIMG   = 'http://chart.googleapis.com/chart?chl='
                    + encodeURIComponent (this.href)
                    + '&chld=M%7C0&cht=qr&chs=125x125'
                    ;
        $(this).append ('<img src="' + qrIMG + '">');
    } );
}

withPages_jQuery (GM_scriptMain);

GM_addStyle (
    "h3 span.post_id a img {width: 125px; height: 125px;}"
);

function withPages_jQuery (NAMED_FunctionToRun) {
    //--- Use named functions for clarity and debugging...
    var funcText        = NAMED_FunctionToRun.toString ();
    var funcName        = funcText.replace (/^function\s+(\w+)\s*\((.|\n|\r)+$/, "$1");
    var script          = document.createElement ("script");
    script.textContent  = funcText + "\n\n";
    script.textContent += 'jQuery(document).ready(function() {'+funcName+'(jQuery);});';
    document.body.appendChild (script);
};

(FF / GM、Chrome、Tampermonkey、およびその他のブラウザーで動作します)。



Firefox(Greasemonkey)-バージョン(およびおそらくTampermonkey)のみがよりシンプルです:

// ==UserScript==
// @name        _Minecraft Forum, post barcodizer
// @namespace   _pc
// @include     http://www.minecraftforum.net/topic/*
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant       GM_addStyle
// ==/UserScript==

var postBkMarks = $("div.post_block div.post_wrap h3 span.post_id a");
postBkMarks.each ( function () {
    var qrIMG   = 'http://chart.googleapis.com/chart?chl='
                + encodeURIComponent (this.href)
                + '&chld=M%7C0&cht=qr&chs=125x125'
                ;
    $(this).append ('<img src="' + qrIMG + '">');
} );

GM_addStyle (
    "h3 span.post_id a img {width: 125px; height: 125px;}"
);
于 2012-09-02T06:31:37.603 に答える