Warning: fopen(/www/sites/update.greasyfork.icu/index/store/temp/a42b445df70aa65fdd42df72fe91e49c.js): failed to open stream: No space left on device in /www/sites/update.greasyfork.icu/index/scriptControl.php on line 65
// ==UserScript==
// @name Nicopedia-Redefine-MMLPlayer (Deprecated)
// @namespace https://github.com/kosh04/userscript
// @version 0.1.20141113
// @description ニコニコ大百科 ピコカキコプレーヤーの読み込み位置を正しくする
// @grant GM_addStyle
// @match http://dic.nicovideo.jp/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js
// @require http://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js
// @author kosh (mono)
// @license Public domain
// @downloadURL https://update.greasyfork.icu/scripts/6390/Nicopedia-Redefine-MMLPlayer%20%28Deprecated%29.user.js
// @updateURL https://update.greasyfork.icu/scripts/6390/Nicopedia-Redefine-MMLPlayer%20%28Deprecated%29.meta.js
// ==/UserScript==
/*
同じIDのピコカキコがページ上に複数ある場合、先頭のピコが再生されてしまう問題を修正する。
Before
------
After
-----
Q. SWFObject.jsではなく、jQueryプラグイン版を利用したほうが簡単では?
@require http://jquery.thewikies.com/swfobject/jquery.swfobject.1-1-1.js
A. プラグイン版はGreasy Fork(このスクリプトを公開しているサイト)上の制約で
利用できないため、代替案としてSWFObjectを使っています。
*/
(function($) {
"use strict";
// オブジェクトの擬似的な再定義
var HororeChuchuParero = {
flashVer: "2011090701"
};
GM_addStyle(".pikoplayer { display: inline-block; }");
HororeChuchuParero.MMLPlayer = {
show_player: function(item) {
var target_id = $(item).attr("id"),
mml_id = $(item).attr("data-mml-id");
if (!swfobject.hasFlashPlayerVersion("10.0.12")) {
alert('ピコカキコはFlash 10以上でないと再生できないです。');
return;
}
if (!$.cookie('volume')) {
savePikoVolume(100);
}
/*
// $.fn.flash が利用できるならこちらのほうが変更は少ない
$(item).empty().flash({
swf: '/fla/' + HororeChuchuParero.flashVer + '/picoplayer.swf',
width: 86,
height: 18,
wmode: 'window',
hasVersion: '10.0.12',
expressInstaller: '/fla/expressInstall.swf',
flashvars: {
autoPlay: 'y',
mmlUrl: 'http://' + location.host + '/mml/' + mml_id,
volume: $.cookie('volume')
},
params: {
allowScriptAccess: 'sameDomain',
bgcolor: "#ffffff"
}
});
*/
swfobject.embedSWF(
/*swfUrl*/ '/fla/' + HororeChuchuParero.flashVer + '/picoplayer.swf',
/*id*/ target_id,
/*width*/ "86",
/*height*/ "18",
/*version*/ "10.0.12",
/*expressInstallSwfurl*/ '/fla/expressInstall.swf',
/*flashvers*/ {
autoPlay: 'y',
mmlUrl: 'http://' + location.host + '/mml/' + mml_id,
volume: $.cookie('volume')
},
/*attributes*/ {
allowScriptAccess: 'sameDomain',
bgcolor: "#ffffff"
}
);
}
};
$("[id^=piko]").each(function(index) {
var $piko = $(this),
mml_id = $piko.attr("id").substring(4), // id="piko777" to "777"
$pikoplayer = $("")
.addClass("pikoplayer")
.attr("id", "piko" + mml_id + "-" + index)
.attr("data-mml-id", mml_id)
// 元のオブジェクトを上書きしていないため、ここでは使えない
// .attr("onclick", "HororeChuchuParero.MMLPlayer.show_player(this)")
.click(function() {
HororeChuchuParero.MMLPlayer.show_player(this);
});
$piko.children().removeAttr("onclick");
$piko.wrapInner($pikoplayer);
});
})(jQuery);