我想使用QR码来简化使用我的Android智能手机浏览某些论坛。
我正在寻找一个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);
}
}
这样做是为了向Youtube的分享箱添加QR码,如下所示:
便于从PC到手机的视频传输。
如何调整此代码以使用论坛固定链接,并使用QR代码图像替换链接的文本?
例如,在this thread on the Minecraft forum上,每个帖子的右上角都有一个小链接,上面写着“#1”,“#2”,“#3”,无限广告 - 这些链接指向该特定内容帖子。
用户将做的是用链接到该帖子的QR码图片(由Google API生成)替换“#1”文本,同时也是可点击的超链接图像(也链接到该帖子)。
然后会对页面上的每个永久链接重复此操作。
这是可能的,如果是的话,怎么样?
答案 0 :(得分:0)
好的,这是一个完整的脚本,它会遍历帖子书签并添加QR码。
我留下了后期号码,因为它们对我在我使用的论坛上很有用。如果您确实希望它们消失,请在$(this).text (" ");
行之前添加$(this).append (...
。
注意使用CSS来设置样式(好),而不是标记属性(邪恶)。
该脚本稍微复杂,需要withPages_jQuery
结构才能使其与Google Chrome兼容(如userscripts标记所示)。
// ==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;}"
);