- -pv
スレッドの閲覧状況:
現在、- がスレを見ています。
これまでに合計 - 表示されました。
※PC・スマホの表示回数をカウントしてます。
※24時間表示がないスレのPVはリセットされます。

Mozilla Firefox 拡張機能スレッド【お兄ちゃん】

101名無しさん :2013/11/24(日)12:08:15 ID:00qjEkW5S
上のをこっちにして、
function getScratchpad() {
 var a = getWindows('devtools:scratchpad');
 return (a && a.length >= 1) ? a[a.length-1] : undefined;
}

これでファイルをスクラッチパッドで開ける
editorが直ぐに有効にならないのだ
ついでにコメント防止、ブラウザコンソールには出る

function openScratchpad(aFileName) {
 try {
  var s = Scratchpad.ScratchpadManager.openScratchpad();
  s.onload = function() {
   var sp = getScratchpad().Scratchpad;
   sp.writeAsComment = function() {};
   if (aFileName) {
    interval = setInterval(function(){
     if (sp.editor && sp.editor._view) {
      clearInterval(interval);
      var file = Components.classes["@mozilla.org/file/local;1"].
       createInstance(Components.interfaces.nsILocalFile);
      file.initWithPath(aFileName);
      sp.setFilename('');
      sp.importFromFile(file, false);
      sp.setFilename(file.path);
      sp.setRecentFile(file);
      sp.editor.dirty = false;
     }
    }, 200);
    setTimeout(function(){clearInterval(interval);}, 1000);
   }
  }
 } catch(e) {
  error(e);
 }
}
102名無しさん :2013/11/24(日)12:32:17 ID:00qjEkW5S
>101は、0バイトのファイルはうまくいかない
103名無しさん :2013/11/24(日)12:52:05 ID:00qjEkW5S
onload後なら、これでいいみたい
getScratchpad() はいらない
s.onload = function() {
//var sp = getScratchpad().Scratchpad;
var sp = s.Scratchpad;

falsetrueになる
var s = Scratchpad.ScratchpadManager.openScratchpad();
document.title = s == getScratchpad();
s.onload = function(){
document.title += s == getScratchpad();
}
104名無しさん :2013/11/24(日)13:13:38 ID:00qjEkW5S
入力短縮できる

s.addEventListener('keydown', spKeyDown, true);
をsetTimeoutの下に追加して、

function spKeyDown(event) {
 var sp = event.currentTarget.Scratchpad;
 if (event.ctrlKey && event.shiftKey && event.keyCode == 65) { // A
  sp.insertTextAtCaret('Application');
  event.preventDefault();
 }
}
105名無しさん :2013/11/24(日)13:44:59 ID:00qjEkW5S
ツールバーを消す
s.document.getElementById('sp-toolbar').setAttribute('hidden', true);
106名無しさん :2013/11/25(月)08:26:54 ID:M3cihtdtx
DLL内の関数の呼び出し
WinAPIの呼び出し

ctypes.jsm - Mozilla | MDN
https://developer.mozilla.org/ja/docs/JavaScript_code_modules/ctypes.jsm
107名無しさん :2013/11/25(月)10:10:49 ID:M3cihtdtx
これでなんかいろいろ見れた

jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/
108名無しさん :2013/11/25(月)10:19:15 ID:M3cihtdtx
setTimeout
clearTimeout

jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/modules/Timer.jsm

戻り値のidは 1秒間に一回setTimeout を呼び出しても、12.4日間は同じのが出てこない
109名無しさん :2013/11/25(月)10:44:38 ID:M3cihtdtx
スクラッチパッドのコマンドとは何のことだろう?

Scratchpad - 開発ツール | MDN
https://developer.mozilla.org/ja/docs/Tools/GCLI/Scratchpad
110名無しさん :2013/11/25(月)11:01:19 ID:M3cihtdtx
二つあるのか
jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/
jar:file:///C:/Program%20Files/Mozilla%20Firefox/browser/omni.ja!/

ブラウザがらみはこっち
jar:file:///C:/Program%20Files/Mozilla%20Firefox/browser/omni.ja!/chrome/browser/content/browser/
111名無しさん :2013/11/25(月)14:51:22 ID:M3cihtdtx
■アドオンの場所
IDにはインストール時のIDが必要だ

Code Samples - Mozilla | MDN
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Add-on_Manager/Code_Samples

Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("myaddon@ne.jp",
 function(addon) {
  var addonLocation = addon.getResourceURI("").QueryInterface(Components.interfaces.nsIFileURL).file.path;
  document.title = addonLocation;
 }
);
112名無しさん :2013/11/25(月)20:10:07 ID:M3cihtdtx
スクラッチパッドの強調表示用のスタイルかな

var w = getWindows('devtools:scratchpad');
var p = w[0].
 Scratchpad.
 editor.
 _styler.
 view.
 _frameWindow.
 frameElement.
 contentDocument.
 styleSheets[1];
for (var i = 0; i < p.cssRules.length; i++)
 addText(p.cssRules[i].cssText);
113名無しさん :2013/11/26(火)16:38:23 ID:ckKyRkgsb
1行に書くとエラーがでる

var i;
if (i) i++ else i = 0; // missing ; before statement

if (i) i++ // ok
else i = 0;
114名無しさん :2013/11/26(火)17:01:50 ID:ckKyRkgsb
ブラウザコンソールをクリアして、スクラッチパッドで実行
function runScratchpad() {
 var w = getWindows("devtools:webconsole");
 if (w.length > 0) w[0].goDoCommand("consoleCmd_clearOutput");
 var s = getWindows("devtools:scratchpad");
 if (s.length > 0) s[s.length - 1].Scratchpad.run();
 if (debugWindow) debugWindow.hidePopup();
}
115名無しさん :2013/11/26(火)17:11:20 ID:ckKyRkgsb
goDoCommand("consoleCmd_clearOutput"); は webconsole.xul に載ってた
windowtype も xul ファイルに載ってる

webconsole.xul - DXR
http://dxr.mozilla.org/mozilla-central/source/browser/devtools/webconsole/webconsole.xul
116名無しさん :2013/11/26(火)17:46:19 ID:ckKyRkgsb
スクラッチパッドでカーソル位置の単語を取得

function spGetLine(editor, y) {
 return editor.getText(editor.getLineStart(y), editor.getLineEnd(y));
}

function spGetCaretWord(editor) {
 function isChar(c) {
  return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||
   (c >= '0' && c <= '9') || (c == '_') || (c >= 0x00A1);
 }

 function getWord(s, x) {
  let i, j;
  for (i = x; (i > 0) && isChar(s[i]); i--);
  for (j = x; (j < s.length + 1) && isChar(s[j]); j++);
  return s.slice(i + 1, j);
 }

 var x = editor.getCaretPosition().col;
 var y = editor.getCaretPosition().line;
 var line = spGetLine(editor, y);
 if (isChar(line[x]))
  return getWord(line, x)
 else if (x > 1)
  return getWord(line, x - 1)
 else
  return '';
}
117名無しさん :2013/11/26(火)17:48:17 ID:ckKyRkgsb
F1キーでカーソル位置の単語で検索

  if (event.keyCode == 112) { // F1
   let word = spGetCaretWord(sp.editor);
   let site = "https://developer.mozilla.org/ja/";
   if (word) gBrowser.selectedTab = gBrowser.addTab(
    'http://www.google.com/search?q=site:' + site + ' "' + word + '"');
   event.preventDefault();
118名無しさん :2013/11/27(水)07:27:18 ID:Vp5WQAzxb
■スクラッチパッドで、実行環境を「ブラウザ」で実行、
次に、「Webページ」で実行をすると、upload.bmpを貼り付けます。

if (window.gBrowser) {
 var canvas = gBrowser.contentDocument.createElement('canvas');
 var img = new Image();
 img.onload = function() {
  canvas.width = img.width;
  canvas.height = img.height;
  var ctx = canvas.getContext('2d');
  ctx.drawImage(img, 0, 0);
  var e = gBrowser.contentDocument.getElementById('sketch');
  e.dataset.base64img = canvas.toDataURL();
 };
 img.src = 'file:///C:/Documents%20and%20Settings/username/My%20Documents/My%20Pictures/upload.bmp';
} else {
 var s = $('#sketch').sketch();
 var img = new Image();
 img.src = s.el.dataset.base64img;
 s.el.width = img.width;
 s.el.height = img.height;
 s.baseImageURL = 'http://toro.open2ch.net/image/logo.gif'; // dummy
 s.baseImageCache = img;
 s.context.drawImage(img, 0, 0);
}
119名無しさん :2013/11/27(水)07:30:42 ID:Vp5WQAzxb
>>51の、function testDocLoaded() {
で、baseImageCache にアクセスするための仕組みを入れれば
うーん
120名無しさん :2013/11/27(水)07:39:51 ID:Vp5WQAzxb
datasetのデータは列挙できないっぽい

DOMStringMap - Web API interfaces | MDN
https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap
121名無しさん :2013/11/27(水)08:32:54 ID:Vp5WQAzxb
>>97-99
初期化するには ScratchpadManager が必要
var s = Scratchpad.ScratchpadManager.openScratchpad({});

引数の受け渡しをやっていない
http://dxr.mozilla.org/mozilla-central/source/browser/base/content/browser.js#7059
var Scratchpad = {
 openScratchpad: function SP_openScratchpad() {
  return this.ScratchpadManager.openScratchpad();
 }
};
122名無しさん :2013/11/27(水)08:42:32 ID:Vp5WQAzxb
browser.js に、グローバルオブジェクトの Scratchpad があって、
var s = Scratchpad.ScratchpadManager.openScratchpad();
もしくは
var s = Scratchpad.openScratchpad();
で、s は windowtype に devtools:scratchpad を持つ、スクラッチパッドのウィンドウ。
sは、Scratchpad っていうメンバ変数を持っていて、 (s.Scratchpad)
さらにそれが editor ってメンバ変数を持っている。 (s.Scratchpad.editor)

ややこしい。
123名無しさん :2013/11/27(水)08:59:56 ID:Vp5WQAzxb
■指定された画像ファイルを貼り付け、アドオンバージョン

function testClick() {
 var canvas = gBrowser.contentDocument.createElement('canvas');
 var img = new Image();
 img.onload = function() {
  canvas.width = img.width;
  canvas.height = img.height;
  var ctx = canvas.getContext('2d');
  ctx.drawImage(img, 0, 0);
  var e = gBrowser.contentDocument.getElementById('sketch');
  e.dataset.base64img = canvas.toDataURL();
 };
 img.src = "file:///C:/Documents%20and%20Settings/username/My%20Documents/My%20Pictures/upload.bmp";

 var s = Scratchpad.ScratchpadManager.openScratchpad({
  filename: '',
  text: "var s = $('#sketch').sketch();" +
   "var img = new Image();" +
   "img.src = s.el.dataset.base64img;" +
   "s.el.width = img.width;" +
   "s.el.height = img.height;" +
   "s.baseImageURL = 'http://toro.open2ch.net/image/logo.gif';" + // dummy
   "s.baseImageCache = img;" +
   "s.context.drawImage(img, 0, 0);"}
 );
 s.onload = function() {
  let interval = setInterval(function(){
   if (s.Scratchpad.editor && s.Scratchpad.editor._view) {
    clearInterval(interval);
    s.Scratchpad.editor.dirty = false;
    s.Scratchpad.run();
    s.Scratchpad.close();
   }
  }, 200);
  setTimeout(function(){clearInterval(interval);}, 1000);
 }
}
124名無しさん :2013/11/28(木)14:34:23 ID:NLnE6IVX+
選択範囲の取得

mozilla-central mozilla/browser/base/content/browser.js
http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.js#4761
function getBrowserSelection(aCharLen) {

function myGetSelection() {
 let s = document.commandDispatcher.focusedWindow.getSelection().toString();
 if (!s) {
  let e = document.commandDispatcher.focusedElement;
  if (e)
   s = e.QueryInterface(Ci.nsIDOMNSEditableElement).editor.selection.toString();
 }
 return s;
}
125名無しさん :2013/11/28(木)18:00:58 ID:NLnE6IVX+
スクラッチパッドのメニュー構造(ヘルプのみ)
http://dxr.mozilla.org/mozilla-central/source/browser/devtools/scratchpad/scratchpad.xul#248

<menubar id="sp-menubar">
 <menu id="sp-help-menu"
    label="&helpMenu.label;"
    accesskey="&helpMenuWin.accesskey;">
  <menupopup id="sp-menu-help">
   <menuitem id="sp-menu-documentation"
        label="&documentationLink.label;"
        accesskey="&documentationLink.accesskey;"
        command="sp-cmd-documentationLink"
        key="key_openHelp"/>
  </menupopup>
 </menu>
</menubar>

var s = getWindows("devtools:scratchpad")[0];
let menubar = s.document.getElementById("sp-menubar");
let menu = s.document.getElementById("sp-help-menu");
let popup = s.document.getElementById("sp-menu-help");
 
// popup.appendItem('ABDEFGH'); ダメ
menu.appendItem('TEST'); // こっち
126名無しさん :2013/11/28(木)18:41:35 ID:NLnE6IVX+
ヘルプメニューの右に新メニューを追加する方法

setAttributeで設定しないといけない
m.label で設定すると、空文字が追加されるだけ。 エラーも出ない。
menupopup も必要
menu は menubar に、
menupopup は menu に、 appendChild する必要がある。

let m = s.document.createElement("menu");
//m.label = "menu"; ダメ
m.setAttribute("label", "menu");
menubar.appendChild(m);

let p = s.document.createElement("menupopup");
p.label = "menupopup";
m.appendChild(p);
127名無しさん :2013/11/28(木)18:42:47 ID:NLnE6IVX+
p.label="menupopup"; は無関係
意味なし
128名無しさん :2013/11/28(木)19:07:00 ID:NLnE6IVX+
appendItem は menupopup ではなくて、menu に対して行う
m.appendItem('new item');

構造では menupopup の下あるから、分かりにくい
129名無しさん :2013/11/29(金)08:17:41 ID:QToJK/uRb
これちゃんと変換されないんですけど
"あああ" が "BBB" に変換される

nsIScriptableUnicodeConverter - XPCOM インタフェースリファレンス | MDN
https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter

function sjisToUnicode(sjistext) {
 var converter = Components
  .classes['@mozilla.org/intl/scriptableunicodeconverter']
  .getService(Components.interfaces.nsIScriptableUnicodeConverter);
 converter.charset = 'Shift_JIS';
 return converter.ConvertToUnicode(sjistext);
}
130名無しさん :2013/11/29(金)08:19:55 ID:QToJK/uRb
UTF-8の「B」は U+0042
SJISの「あ」は0x82A0
131名無しさん :2013/11/29(金)08:47:07 ID:QToJK/uRb
■クリップボードへのテキストのコピー

function setClipboardText(text) {
const c = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper);
c.copyString(text);
}
132名無しさん :2013/11/29(金)08:51:33 ID:QToJK/uRb
>>124 >>131
を使って、

 <popup id="contentAreaContextMenu">
  <menuitem id="context-copy2chsource" label="行頭の全角空白を半角空白に変換してコピー"
   insertafter="context-copy" oncommand="myCopy2chSource();"/>
 </popup>

function myCopy2chSource() {
 let s = myGetSelection();
 if (s) {
  s = s.split("").reverse().join("").replace(/\u3000(?=\u3000*$)/gm, '\x20\x20').
   split("").reverse().join("");
  setClipboardText(s);
 }
}
133名無しさん :2013/11/29(金)12:13:54 ID:QToJK/uRb
>>129
ここのサンプルはうまくいった

MozillaZine.jp フォーラム _ トピック - Firefox の API を利用して言語のエンコーディングに対応する方法
http://forums.mozillazine.jp/viewtopic.php?t=9240

var conv = Components.classes ["@mozilla.org/intl/scriptableunicodeconverter"]
.createInstance (Components.interfaces.nsIScriptableUnicodeConverter);
conv.charset = "shift_jis";
var unicode_text = "なんとか";
var sjis_text = conv.ConvertFromUnicode(unicode_text);
var unicode_text2 = conv.ConvertToUnicode(sjis_text);
document.title = unicode_text2;
134名無しさん :2013/11/29(金)12:46:16 ID:QToJK/uRb
>>130は間違え
スクラッチパッド上でsjisの文字列を入力できない
135名無しさん :2013/11/29(金)15:45:29 ID:tqBzHvhcl
これでsjisのファイルを読み込んでるんですけど、ちゃんと表示されないんですよ。

<?xml version="1.0"?>
<overlay id="testaddon" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="test.js" charset="shift_JIS"/>
</overlay>

test.js
var sjistext = "あああ";
document.title = sjisToUnicode(sjistext);
136名無しさん :2013/11/29(金)16:11:28 ID:QToJK/uRb
var sjistext = "あああ";
document.title = sjistext.charCodeAt(0).toString(16); // fffd

unicodeの「あ」は 3042
sjisの「あ」82A0

unicodeの fffdは REPLACEMENT CHARACTER というらしいが・・・
137名無しさん :2013/11/29(金)16:13:29 ID:QToJK/uRb
変換できなかった文字か
ということは、
138名無しさん :2013/11/29(金)16:18:39 ID:QToJK/uRb
<script type="application/x-javascript" src="test.js" charset="shift_JIS"/>

xulファイルではcharsetの指定は意味がないのかもしれない
139名無しさん :2013/11/29(金)19:07:15 ID:QToJK/uRb
できた。 スクラッチパッドの強調表示変更

function spChangeStyle(styleSheet, style, cssText) {
 for (let i = 0; i < styleSheets1.cssRules.length; i++) {
  if (styleSheets1.cssRules[i].selectorText == style) {
   styleSheet.deleteRule(i);
   styleSheet.insertRule(style + " " + cssText, i);
   break;
  }
 }
}

var ss = w[0].Scratchpad.editor._styler.view._frameWindow.frameElement.contentDocument.styleSheets[1];
spChangeStyle(ss, ".token_string", "{color: blue;}");
spChangeStyle(ss, ".token_keyword", "{color: black; font-weight: bold;}");
spChangeStyle(ss, ".token_singleline_comment, .token_multiline_comment, .token_doc_comment", "{color: navy; font-weight: bold;}");
http://img.open2ch.net/p/software-1339905697-139.png
140名無しさん :2013/11/29(金)19:09:22 ID:QToJK/uRb
あ、コメントの styleSheets1 は ss に変更
141名無しさん :2013/11/29(金)19:19:10 ID:QToJK/uRb
名前の付け方おかしいな
function spChangeStyle(styleSheet, style, cssText) {

cssTextはこういうのだから
.token_string { color: blue; }
142名無しさん :2013/11/29(金)19:23:09 ID:QToJK/uRb
wってのはこれ
var w = getWindows('devtools:scratchpad');
143名無しさん :2013/11/30(土)05:24:35 ID:SIH5hD7zw
userChrome.cssでも設定できるかも!
でも、token_multiline_commentしか有効にならない

この順番にすると、token_singleline_commnetのみが有効
.token_multiline_comment,
.token_singleline_comment,
.token_doc_comment {

Fx4* .css tweaks _ mozillaZine Forums
http://forums.mozillazine.org/viewtopic.php?f=7&t=2057009&start=495
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
window[windowtype="devtools:scratchpad"] #scratchpad-textbox
{ font-family: monospace !important;
 font-size: 10pt !important; }
*/

window[windowtype="devtools:scratchpad"]
.token_string {
 color: blue !important;
}

window[windowtype="devtools:scratchpad"]
.token_keyword {
 color: black !important;
 font-weight: bold !important;
}

window[windowtype="devtools:scratchpad"]
.token_singleline_comment,
.token_multiline_comment,
.token_doc_comment {
 color: navy !important;
 font-weight: bold !important;
}
144名無しさん :2013/11/30(土)05:39:05 ID:SIH5hD7zw
できた。 カンマがいるんだ

window[windowtype="devtools:scratchpad"],
.token_string {
 font-style: normal !important;
 color: blue !important;
}

window[windowtype="devtools:scratchpad"],
.token_keyword {
 color: black !important;
 font-weight: bold !important;
}

window[windowtype="devtools:scratchpad"],
.token_singleline_comment,
.token_multiline_comment,
.token_doc_comment {
 color: navy !important;
 font-weight: bold !important;
}
145名無しさん :2013/11/30(土)05:42:26 ID:SIH5hD7zw
!important は not important かと思ったら、逆だ

Cascading Style Sheets - Wikipedia
http://ja.wikipedia.org/wiki/Cascading_Style_Sheets
>ユーザスタイルシート中で最重要指定された宣言 - ユーザーエージェントの設定の
>スタイルの中で!importantを宣言に付加する
146名無しさん :2013/11/30(土)08:36:30 ID:SIH5hD7zw
Firefox chrome:// document URLs - Super User
http://superuser.com/questions/392471/firefox-chrome-document-urls
chrome://browser/content/scratchpad.xul
147名無しさん :2013/11/30(土)09:33:25 ID:/NJZwm+S7
既にあるマニフェストファイル chrome.manifest に追加して、
スクラッチパッドのオーバーレイが出来ました

content testaddon chrome/content/
content spaddon chrome/content/
overlay chrome://browser/content/browser.xul chrome://testaddon/content/testaddon.xul
overlay chrome://browser/content/devtools/scratchpad.xul chrome://testaddon/content/spaddon.xul

<?xml version="1.0"?>
<overlay id="spaddon"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<menubar id="sp-menubar">
<menu label="テスト" insertafter="sp-help-menu">
<menupopup>
<menuitem label="アイテム"/>
</menupopup>
</menu>
</menubar>
<script><![CDATA[
]]></script>
</overlay>
148名無しさん :2013/11/30(土)09:34:49 ID:SIH5hD7zw
>>146は間違いってことだな
149名無しさん :2013/11/30(土)16:06:58 ID:SIH5hD7zw
カンマがいるんじゃなくて、
window[windowtype="devtools:scratchpad"]
が不要だった
でもこれ、他のウィンドウにも適用されるんですよね

.token_string {
font-style: normal !important;
color: blue !important;
}
150名無しさん :2013/12/02(月)08:46:46 ID:MT68RFpMw
コードモジュールの置き場所

JavaScript コードモジュールの利用 - Mozilla | MDN
https://developer.mozilla.org/ja/docs/Mozilla/JavaScript_code_modules/Using#resource:_Protocol
151名無しさん :2013/12/02(月)09:01:22 ID:MT68RFpMw
chrome.manifestoファイルの説明

Chrome Registration | MDN
https://developer.mozilla.org/ja/docs/Chrome_Registration
152名無しさん :2013/12/03(火)05:45:31 ID:GeZiI/os2
Manifest file - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Manifest_file
153名無しさん :2013/12/03(火)06:10:36 ID:GeZiI/os2
こう作ったとすると、
D:\FirefoxAddons\testaddon\chrome.manifest
D:\FirefoxAddons\testaddon\install.rdf
D:\FirefoxAddons\testaddon\chrome\content\testaddon.xul

chrome.manifestファイル
content testaddon chrome/content/
overlay chrome://browser/content/browser.xul chrome://testaddon/content/testaddon.xul

contentが三つの意味で使われているからややこしい。
content(1) testaddon chrome/content(2)/
overlay chrome://browser/content/browser.xul chrome://testaddon/content(3)/testaddon.xul

(1)はcontent命令
(2)はフォルダ名としての chrome/content/
chrome://testaddon/ が D:\FirefoxAddons\testaddon\ (chrome.manifestファイルの場所)
content(3)を chrome/content(2) で置き換えるって意味

すなわち、
chrome://testaddon/content(3)/testaddon.xul

chrome://testaddon/chrome/content/testaddon.xul
154名無しさん :2013/12/03(火)06:11:36 ID:GeZiI/os2
content命令を使わない場合は、chrome.manifestファイルはこうなる

overlay chrome://browser/content/browser.xul file:///D:/FirefoxAddons/testaddon/chrome/content/testaddon.xul
155名無しさん :2013/12/03(火)06:15:12 ID:GRnBs+LyO
でも、コレだけじゃだめなんだな
overlay chrome://browser/content/devtools/scratchpad.xul chrome://testaddon/chrome/content/spaddon.xul

chrome://testaddon/ を使いたいなら、content命令が必要ってことか
156名無しさん :2013/12/03(火)06:26:34 ID:GRnBs+LyO
これで D:\FirefoxAddons/testaddon/chrome/testaddon.xulを見つけてくれるかと思ったのに、
ダメだったので、>>153は間違い。

content testaddon chrome/
overlay chrome://browser/content/devtools/scratchpad.xul chrome://testaddon/content/testaddon.xul

view-source:file:///D:/FirefoxAddons/testaddon/chrome/content/testaddon.xul にはファイルが見つかりませんでした。
157名無しさん :2013/12/03(火)06:35:23 ID:GRnBs+LyO
D:\FirefoxAddons\testaddon\kuromu\XUL\testaddon.xul
なら、こうなる

content testaddon kuromu/XUL/
overlay chrome://browser/content/browser.xul chrome://testaddon/content/testaddon.xul
158名無しさん :2013/12/03(火)06:38:04 ID:GeZiI/os2
でも、これだと「要素が見つかりません。」が出る

D:\FirefoxAddons\testaddon\kuromu\testaddon.xul

content spaddon kuromu/
overlay chrome://browser/content/devtools/scratchpad.xul chrome://testaddon/content/spaddon.xul
159名無しさん :2013/12/03(火)06:47:52 ID:GRnBs+LyO
アドレスバーに
chrome://browser/content/browser.xul
打ち込んだら、
ブラウザの中にブラウザが現れた!
160名無しさん :2013/12/03(火)06:57:49 ID:GeZiI/os2
これもダメだな
D:\FirefoxAddons\spaddon.xul

content spaddon ../
overlay chrome://browser/content/devtools/scratchpad.xul chrome://testaddon/content/spaddon.xul
161名無しさん :2013/12/03(火)13:21:37 ID:GeZiI/os2
上のは browser.xul と scratchpad.xul をごっちゃにしてました

次は
chrome.manifestファイル
resource mymodules file:///D:/FirefoxAddons/asdfmodules/

インポート方法
Components.utils.import("resource://mymodules/sample.js");

これで、D:\FirefoxAddons\asdfmodules\sample.js がインポートされる
162名無しさん :2013/12/03(火)16:25:14 ID:GeZiI/os2
>>124はtextareaで選択範囲が複数行の時、一行になってしまう

複数行に対応したバージョン

function myGetSelection() {
 let s = document.commandDispatcher.focusedWindow.getSelection().toString();
 if (!s) {
  let e = document.commandDispatcher.focusedElement;
  if (e) {
   let element = e.QueryInterface(Ci.nsIDOMNSEditableElement);
   s = element.value.slice(element.selectionStart, element.selectionEnd);
  }
 }
 return s;
}
163名無しさん :2013/12/04(水)08:26:59 ID:NKEjnYRbK
#D:\FirefoxAddons\testaddon\chrome.manifestファイルの内容
#はコメント

#これが元のサンプル
#OK D:\FirefoxAddons\testaddon\chrome\content\testaddon.xul
#content testaddon chrome/content/
#overlay chrome://browser/content/browser.xul chrome://testaddon/content/testaddon.xul

# \chromeフォルダを無くした
#OK D:\FirefoxAddons\testaddon\content\testaddon.xul
#content testaddon content/
#overlay chrome://browser/content/browser.xul chrome://testaddon/content/testaddon.xul

#chrome.manifestファイルと同じ場所に置きたいならこれ
#OK D:\FirefoxAddons\testaddon\testaddon.xul
#content testaddon ../testaddon/
#overlay chrome://browser/content/browser.xul chrome://testaddon/content/testaddon.xul

#戻りすぎ
#OK D:\FirefoxAddons\testaddon\testaddon.xul
#content testaddon ../../Firefoxaddons/testaddon/
#overlay chrome://browser/content/browser.xul chrome://testaddon/content/testaddon.xul

# / 一つだけは認められないみたい
#NG D:\FirefoxAddons\testaddon\testaddon.xul
#content testaddon /
#overlay chrome://browser/content/browser.xul chrome://testaddon/content/testaddon.xul

# / 相対パスの使い方が間違っている
#NG D:\FirefoxAddons\testaddon\testaddon.xul
#view-source:file:///D:/testaddon/testaddon.xul にはファイルが見つかりませんでした。
#content testaddon ../../testaddon/
#overlay chrome://browser/content/browser.xul chrome://testaddon/content/testaddon.xul

#絶対パスで指定
#OK D:\testaddon.xul
#overlay chrome://browser/content/browser.xul file:///D:/testaddon.xul

#戻るだけでもOKだ
#OK D:\testaddon.xul
#content testaddon ../../
#overlay chrome://browser/content/browser.xul chrome://testaddon/content/testaddon.xul
164名無しさん :2013/12/04(水)08:33:12 ID:LtVdYZJHS
こっちでもいけた
こっちのほうがいい

#chrome.manifestファイルと同じ場所に置きたいならこれ
#OK D:\FirefoxAddons\testaddon\testaddon.xul
#content testaddon ./
#overlay chrome://browser/content/browser.xul chrome://testaddon/content/testaddon.xul
165名無しさん :2013/12/04(水)09:06:18 ID:LtVdYZJHS
Firefox拡張作成メモWiki - JavaScriptコードモジュール
http://www43.atwiki.jp/fxext/pages/38.html

resource://gre/modules/***.jsm //omni.ja内のmodulesフォルダ
resource://app/modules/***.jsm //browser/omni.ja内のmodulesフォルダ
166名無しさん :2013/12/04(水)09:13:55 ID:NKEjnYRbK
□module1.js の場所
D:\FirefoxAddons\mymodules\module1.js

□D:\FirefoxAddons\testaddon\testaddon.xul での使い方
Components.utils.import("resource://mod/module1.js");

□D:\FirefoxAddons\testaddon\chrome.manifest の内容
resource mod ../mymodules/

これでモジュールの場所も相対フォルダで指定可能
167名無しさん :2013/12/04(水)11:35:31 ID:NKEjnYRbK
D:\FirefoxAddons\testaddon\testaddon.xul

test にしたらこうなる
content test ./
overlay chrome://browser/content/browser.xul chrome://test/content/testaddon.xul
168名無しさん :2013/12/05(木)06:22:37 ID:SvdoVjjHX
content命令使わずに全部いけた
chrome.manifestファイルのある場所からの相対位置でいけるんだな

#OK D:\FirefoxAddons\testaddon\testaddon.xul
overlay chrome://browser/content/browser.xul testaddon.xul

#OK D:\FirefoxAddons\testaddon\xul\testaddon.xul
overlay chrome://browser/content/browser.xul xul/testaddon.xul

#OK D:\FirefoxAddons\test\testaddon.xul
overlay chrome://browser/content/browser.xul ../test/testaddon.xul
169名無しさん :2013/12/05(木)09:13:06 ID:SvdoVjjHX
2012年02月 : アクネシ
http://akuneshi.exblog.jp/m2012-02-01/
>このとき「このアドオンは壊れているため、インストールできませんでした。」となってしまう場合は、
>自分もハマッタのですが、上位のフォルダごと圧縮してしまうと構成が変わってしまうためエラーになります。

フォルダを右クリックして「送る」→「圧縮(zip形式)フォルダ」はダメ
全ファイルを選択して右クリックはOK
170名無しさん :2013/12/05(木)09:31:37 ID:rGwjLReZu
全てのファイルが chrome.manifest と同じ場所にある場合、
このやり方で xpi 化も問題なかった

resource modules ./
overlay chrome://browser/content/browser.xul testaddon.xul
overlay chrome://browser/content/devtools/scratchpad.xul spaddon.xul

別の場所にある場合、どうやって zip に圧縮するかわからない
#resource modules ../modules/
171名無しさん :2013/12/09(月)17:37:29 ID:UhT+kx+7Y
Servicesモジュールを使うとウィンドウの列挙はこうなる

Components.utils.import("resource://gre/modules/Services.jsm");

let enumerator = Services.wm.getEnumerator(windowtype);
let a = [];
while(enumerator.hasMoreElements()) {
a.push(enumerator.getNext());
}
return a;
172名無しさん :2013/12/11(水)10:59:57 ID:yNPk1aqgs
■ウィンドウの表示

□すでにアドオンとしてインストールされている chrome.manifest に追加する行
content test ./

□chrome.manifestと同じ場所にある、debugwindow.xulの内容
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window
 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
 id="debugwindow"
 title="デバッグ"
 windowtype="debugwindow">
</window>

□スクラッチパッドのコード(要ポップアップのブロック解除)
 let w = open("chrome://test/content/debugwindow.xul", "_blank", "chrome,width=600,height=300");
173名無しさん :2013/12/11(水)11:05:42 ID:yNPk1aqgs
 let w = open("debugwindow.xul", "_blank", "chrome,width=600,height=300");
これだと、ブラウザで表示しているパスから探そうとする

このスレを表示していると、
http://anago.open2ch.net/test/read.cgi/software/1339905697/debugwindow.xul
を表示しようとする。

xulファイルは実行可能ファイル(.exe)なみに何でもできるけど、
危なくないのかな。
174名無しさん :2013/12/11(水)11:49:23 ID:yNPk1aqgs
SCRAPBLOG : persist 属性による属性値の永続化
http://www.xuldev.org/blog/?p=982

ウィンドウ位置の自動保存と復元
persist="screenX screenY width height sizemode"

localstore.rdfファイルに書き込まれる
175名無しさん :2013/12/11(水)12:28:50 ID:yNPk1aqgs
alwaysRaisedはスクラッチパッドから実行してもダメ

let w = open("chrome://test/content/debugwindow.xul", "_blank",
"chrome,resizable,alwaysRaised");
176名無しさん :2013/12/11(水)13:53:41 ID:yNPk1aqgs
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window
 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
 id="debugwindow"
 title="デバッグ"
 windowtype="debugwindow"
 fullscreenbutton="true"
 width="200" height="500"
 persist="screenX screenY width height sizemode">
 <script type="application/javascript" src="chrome://test/content/debugwindow.cxx"/>
 <vbox flex="1">
  <textbox id="dwTextbox1" class="plain" multiline="true" wrap="off" persist="height"
   style="background:white;"/>
  <splitter/>
  <textbox id="dwTextbox2" class="plain" multiline="true" wrap="off" flex="1"
   style="background:white;"/>
 </vbox>
</window>
177名無しさん :2013/12/12(木)11:17:15 ID:ec71KEIBy
oncommand は let を使うとエラー。 var なら大丈夫
SyntaxError: missing ; before statement @ chrome://browser/content/browser.xul:1

 <popup id="contentAreaContextMenu">
  <menuitem id="context-searchselect"
    oncommand="let s = getBrowserSelection(); BrowserSearch.loadSearchFromContext(s);"/>
 </popup>
178名無しさん :2013/12/12(木)11:20:06 ID:ec71KEIBy
整数式になっていません

  <menuitem id="context-searchselect"
    oncommand="var s = getBrowserSelection();" +
    "BrowserSearch.loadSearchFromContext(s);" +
    "gFindBar._findField.value = s;"/>
179名無しさん :2013/12/12(木)11:22:00 ID:ec71KEIBy
SyntaxError: illegal character @ chrome://browser/content/browser.xul:1

  <menuitem id="context-searchselect"
    oncommand="var s = getBrowserSelection();\
    BrowserSearch.loadSearchFromContext(s);\
    gFindBar._findField.value = s;"/>
180名無しさん :2013/12/12(木)11:23:45 ID:ec71KEIBy
一行にすれば問題ない

  <menuitem id="context-searchselect"
    oncommand="var s = getBrowserSelection();BrowserSearch.loadSearchFromContext(s);gFindBar._findField.value = s;"/>
181名無しさん :2013/12/12(木)11:33:59 ID:ec71KEIBy
ちなみにこれを使うと、ctrl+F で出てくる検索バーの初期値を選択範囲の文字列にできる。

ページ上で範囲選択
右クリックしてGoogleで検索(ここで新しいタブはOK)
検索結果からリンクをクリック(ここで新しいタブ/ウィンドウだとダメ)
ctrl+Gですばやく移動
182名無しさん :2013/12/15(日)16:18:54 ID:RBo+8zW+1
console.log()以外にもいろいろあった
console.dir(obj); でプロパティーの列挙

【Javascript】consoleオブジェクトが持つlog以外の便利メソッド18(前編) : アシアルブログ
http://blog.asial.co.jp/1036

console - Web API リファレンス | MDN
https://developer.mozilla.org/ja/docs/Web/API/console
183名無しさん :2013/12/15(日)16:55:53 ID:RBo+8zW+1
クラス一覧があった

Mozilla: Class List
http://doxygen.db48x.net/mozilla/html/annotated.html
http://doxygen.db48x.net/mozilla/html/interfacensIWindowWatcher.html
184名無しさん :2013/12/15(日)17:35:43 ID:RBo+8zW+1
モジュールからコンソールを使う方法

Components.utils.import("resource://gre/modules/devtools/Console.jsm");

console.log("atest");
185名無しさん :2013/12/15(日)17:49:45 ID:RBo+8zW+1
モジュールのソースをいじっても、ブラウザ再起動で変更が反映されないのだが
186名無しさん :2013/12/15(日)18:36:16 ID:RBo+8zW+1
オブザーバーの通知一覧
英語版の方が沢山載ってる

Observer Notifications | MDN
https://developer.mozilla.org/ja/docs/Observer_Notifications

Observer Notifications | MDN
https://developer.mozilla.org/en-US/docs/Observer_Notifications
187名無しさん :2013/12/15(日)20:46:26 ID:RBo+8zW+1
モジュール内で
Services.ww.registerNotification({
やっても最初のブラウザに対して登録できないみたい
188名無しさん :2013/12/15(日)21:02:30 ID:RBo+8zW+1
これうまくいかない

Console - Web API interfaces | MDN
https://developer.mozilla.org/en-US/docs/Web/API/console#Using_string_substitutions

for (var i=0; i<5; i++) {
console.log("Hello, %s. You've called me %d times.", "Bob", i+1);
}

21:00:11.871 "Hello, %s. You've called me %d times." "Bob" 1
21:00:11.871 "Hello, %s. You've called me %d times." "Bob" 2
21:00:11.872 "Hello, %s. You've called me %d times." "Bob" 3
189名無しさん :2013/12/15(日)22:00:44 ID:dfWoEf+Ud
それはおかしいよ
21:58:09.584 "Hello, Bob. You've called me 1 times." Scratchpad/1:11
21:58:09.584 "Hello, Bob. You've called me 2 times." Scratchpad/1:11
21:58:09.585 "Hello, Bob. You've called me 3 times." Scratchpad/1:11
21:58:09.585 "Hello, Bob. You've called me 4 times." Scratchpad/1:11
21:58:09.585 "Hello, Bob. You've called me 5 times." Scratchpad/1:11
190名無しさん :2013/12/16(月)12:08:07 ID:2DHVfgJeC
再起動不要アドオンはこんなの書くのか。
再起動でいっか

ブートストラップ型拡張機能 - 拡張機能 | MDN
https://developer.mozilla.org/ja/docs/Extensions/Bootstrapped_extensions

restartless/bootstrap.js at master ・ piroor/restartless ・ GitHub
https://github.com/piroor/restartless/blob/master/bootstrap.js
191名無しさん :2013/12/16(月)12:09:09 ID:2DHVfgJeC
>>180
あ、スクラッチパッドからはうまくいきました。
192名無しさん :2013/12/16(月)12:21:43 ID:2DHVfgJeC
わかりました。 これだとダメでした。
これは Firebug互換とある

Components.utils.import("resource://gre/modules/devtools/Console.jsm");
for (var i=0; i<5; i++) {
console.log("Hello, %s. You've called me %d times.", "Bob", i+1);
}

jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/modules/devtools/Console.jsm
>Define a 'console' API to roughly match the implementation provided by Firebug.
193名無しさん :2013/12/16(月)12:39:26 ID:2DHVfgJeC
これが window.console の本体っぽい

mozilla-central mozilla/dom/base/ConsoleAPI.js
http://mxr.mozilla.org/mozilla-central/source/dom/base/ConsoleAPI.js
194名無しさん :2013/12/16(月)13:27:34 ID:2DHVfgJeC
canvasのソースか

mozilla-central mozilla/content/canvas/src/
http://mxr.mozilla.org/mozilla-central/source/content/canvas/src/
195名無しさん :2013/12/16(月)14:10:15 ID:2DHVfgJeC
WindowWatcherのソース

mozilla-central mozilla/embedding/components/windowwatcher/src/nsWindowWatcher.cpp
http://mxr.mozilla.org/mozilla-central/source/embedding/components/windowwatcher/src/nsWindowWatcher.cpp
196名無しさん :2013/12/16(月)14:40:14 ID:2DHVfgJeC
F8でカーソル位置の要素のプロパティー一覧をブラウザコンソールに表示
Firefoxの全ウィンドウが対象なので、スクラッチパッドやブックマークの要素も取得する。

モジュールに置けば、Services.ww.registerNotification(_Observe); は一度だけ実行されるけど、
オーバーレイファイルに置くと、ウィンドウが作成されるたびに実行されて良くない。

Components.utils.import("resource://gre/modules/Services.jsm");

var _ObsElement = null;

function _ObsKeyDown(event) {
 if (event.keyCode == event.DOM_VK_F8 && _ObsElement)
  console.dir(_ObsElement);
}

function _ObsMouseMove(event) {
 _ObsElement = event.target;
 Services.wm.getMostRecentWindow("navigator:browser").document.title = _ObsElement.outerHTML;
}

function _ObsDomWindowOpened(w) {
 w.addEventListener("keydown", _ObsKeyDown, true);
 w.addEventListener("mousemove", _ObsMouseMove, true);
}

_ObsDomWindowOpened(Services.wm.getMostRecentWindow("navigator:browser"));

var _Observe = {
 observe: function(aSubject, aTopic, aData) {
  if (aTopic == "domwindowopened")
   _ObsDomWindowOpened(aSubject);
 }
}

Services.ww.registerNotification(_Observe);
197名無しさん :2013/12/16(月)15:47:02 ID:2DHVfgJeC
>>123のバージョンアップ
ちゃんと一回で貼り付けられます。 onloadをちゃんと使わないとダメですね

function open2chPasteImage(uri) {
 let canvas = gBrowser.contentDocument.createElement("canvas");
 let img = new Image();
 img.onload = function() {
  canvas.width = img.width;
  canvas.height = img.height;
  var ctx = canvas.getContext("2d");
  ctx.drawImage(img, 0, 0);
  let e = gBrowser.contentDocument.getElementById("sketch");
  e.dataset.base64img = canvas.toDataURL();
  var _sp = Scratchpad.ScratchpadManager.openScratchpad({
   filename: "",
   text: "$('#oekakiMode').attr('checked', true);\n" +
    "$('#oekakiCanvas').show();\n" +
    "var s = $('#sketch').sketch();\n" +
    "var img = new Image();\n" +
    "img.onload = function() {\n" +
    " s.el.width = img.width;\n" +
    " s.el.height = img.height;\n" +
    " s.baseImageURL = 'http://toro.open2ch.net/image/logo.gif';\n" + // dumbr
    " s.baseImageCache = img;\n" +
    " s.context.drawImage(img, 0, 0);\n" +
    "}\n" +
    "img.src = s.el.dataset.base64img;\n"
  });
  _sp.onload = function() {
   setTimeout(function(){
    _sp.Scratchpad.editor.dirty = false;
    _sp.Scratchpad.run();
    _sp.Scratchpad.close();
   }, 500);
  }
 };
 img.src = uri;
}
198名無しさん :2013/12/16(月)16:09:24 ID:2DHVfgJeC
500ミリ秒後じゃなくて、こっちでいいかも
  _sp.onload = function() {
   var _spEditorLoad = _sp.Scratchpad._onEditorLoad;
   _sp.Scratchpad._onEditorLoad = function(aState) {
    _spEditorLoad.call(_sp.Scratchpad, aState);
    _sp.Scratchpad.editor.dirty = false;
    _sp.Scratchpad.run();
    _sp.Scratchpad.close();
   }
  }
199名無しさん :2013/12/16(月)16:21:15 ID:2DHVfgJeC
bindを使いこなせば

JavaScript初級者から中級者になろう:十一章第二回 bind
http://uhyohyohyo.sakura.ne.jp/javascript/11_2.html

Function.prototype.bind() - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
200名無しさん :2013/12/16(月)16:23:30 ID:2DHVfgJeC
難解だ

var x = 9;
var module = {
 x: 81,
 getX: function() { return this.x; }
};

module.getX(); // 81

var getX = module.getX;
getX(); // 9, because in this case, "this" refers to the global object えええ

// create a new function with 'this' bound to module
var boundGetX = getX.bind(module);
boundGetX(); // 81
201名無しさん :2013/12/20(金)18:37:24 ID:/Avsvtn3t
JavaScriptエンジン(SpiderMonkey)のソース?

mozilla-central mozilla/js/src/
http://mxr.mozilla.org/mozilla-central/source/js/src/
202名無しさん :2013/12/20(金)18:47:27 ID:/Avsvtn3t
>>197-198
これがまっとうなやりかた

  _sp.onload = function() {
   _sp.Scratchpad.addObserver({
    onReady: function(pad) {
     pad.editor.dirty = false;
     pad.run();
     pad.close();
    }
   });
  }

mozilla-central mozilla/browser/devtools/scratchpad/scratchpad.js
http://mxr.mozilla.org/mozilla-central/source/browser/devtools/scratchpad/scratchpad.js#1682
203名無しさん :2013/12/20(金)19:07:33 ID:/Avsvtn3t
グローバル変数は使わずに、こうすべきなのかも

  sp.onload = function(spe) {
   spe.currentTarget.Scratchpad.addObserver({
    onReady: function(asp) {
     asp.editor.dirty = false;
     asp.run();
     asp.close();
    }
   });
  }
204名無しさん :2013/12/21(土)23:29:30 ID:R1MgE1+GE
ハッシュで速いって言うので

var Domains = {
 "com": {
  "google": function(){focusFirstInput();}
 },
 "jp": {
  "co": {
   "google": function(){focusFirstInput();}
  }
 },
 "net": {
  "open2ch": function(){open2chOnLoad();}
 },
 "org": {
  "mozilla": function(){focusFirstInput();}
 }
};

function brDocLoad() {
 let loc = gBrowser.contentWindow.location;
 let a = loc.hostname.split(".");
 if (loc.protocol == "http:" || loc.protocol == "https:") {
  let h = Domains;
  for (let i = a.length - 1; i >= 0; i--) {
   h = h[a[i]];
   if (typeof(h) == "function") {
    h.call(null);
    return;
   }
  }
 } else if (loc.protocol == "file:") {
  focusFirstInput();
 }
205名無しさん :2013/12/21(土)23:29:53 ID:R1MgE1+GE
function focusFirstInput() {
 let a = gBrowser.contentDocument.getElementsByTagName("input");
 for (let i = 0; i < a.length; i++) {
  if (a[i].getAttribute("type") == "hidden") continue;
  a[i].focus();
  a[i].selectionStart = a[i].textLength;
  a[i].selectionEnd = a[i].textLength;
  return a[i];
 }
 return null;
}
206名無しさん :2013/12/21(土)23:48:52 ID:R1MgE1+GE
ハッシュならこれでも速いはず

var Domains = {
 "google.com": function(){focusFirstInput();},
 "open2ch.net": function(){open2chOnLoad();},
 "mozilla.org": function(){focusFirstInput();},
 "google.co.jp": function(){focusFirstInput();}
};

function brDocLoad() {
 let loc = gBrowser.contentWindow.location;
 let a = loc.hostname.split(".");
 if (loc.protocol == "http:" || loc.protocol == "https:") {
  let s = a[a.length - 1];
  for (let i = a.length - 2; i >= 0; i--) {
   s = a[i] + "." + s;
   if (typeof(Domains[s]) == "function") {
    Domains[s].call(null);
    return;
   }
  }
 } else if (loc.protocol == "file:") {
  focusFirstInput();
 }
};
207名無しさん :2013/12/22(日)00:11:45 ID:XTFc8uEQo
if else を10万個やったら
too much recursion
って出た
208名無しさん :2013/12/22(日)00:14:34 ID:XTFc8uEQo
1000個ならできた
if 1000個で1ミリ秒かからない
209名無しさん :2013/12/22(日)05:24:05 ID:XTFc8uEQo
条件の厳しいほうから探す、及び、
Domainsに追加する場合

var Domains = {
 "google.co.jp": function(){focusFirstInput();},
 "google.com": function(){focusFirstInput();},
 "mozilla.org": function(){focusFirstInput();}
};

Domains["open2ch.net"] = function() {
 open2chOnLoad();
}

function brDocLoad() {
 let loc = gBrowser.contentWindow.location;
 let a = loc.hostname.split(".");
 if (loc.protocol == "http:" || loc.protocol == "https:") {
  while (a.length) {
   let s = a.join(".");
   if (Domains[s]) {
    Domains[s].call(null, loc);
    return;
   }
   a.shift();
  }
 } else if (loc.protocol == "file:") {
  focusFirstInput();
 }
};
210名無しさん :2013/12/22(日)23:55:28 ID:XTFc8uEQo
これがdocumentのソースなのかな

mozilla-central mozilla/content/xul/document/src/XULDocument.cpp
http://mxr.mozilla.org/mozilla-central/source/content/xul/document/src/XULDocument.cpp
211名無しさん :2013/12/23(月)00:04:40 ID:hYYjl84az
コントロールのソース?

mozilla-central mozilla/toolkit/content/widgets/
http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/

mozilla-central mozilla/toolkit/content/widgets/listbox.xml
http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/listbox.xml
212名無しさん :2013/12/23(月)02:54:36 ID:hYYjl84az
スクラッチパッドのオーバーレイファイルでやると、
スクラッチパッドのコード実行前に実行できる。

var spInsertCode =
 "var _TA=document.getElementById('MyTextArea');\
  if (!_TA) {\
   _TA = document.createElement('textarea');\
   _TA.id = 'MyTextArea';\
   _TA.style = 'position:fixed;left:0;top:65;width:100%;height:50%;';\
   _TA.style.zIndex = 0xFFFF;\
   _TA.style.fontFamily = 'MS Gothic';\
   _TA.setAttribute('wrap', 'off');\
   document.body.insertBefore(_TA, document.body.firstChild);\
  }\
  _TA.hidden = false;\
  _TA.value = '';\
  function W(s){_TA.value+=s+'\\n';}\
  function P(o){let a=[];for(let i in o)a.push(i+'='+(o[i]?o[i].toString().\
  replace(/(\\f|\\n|\\r)/gm,' ').substr(0,80):i));a.sort();W(a.join('\\n'));}\n";

Scratchpad.execute = function SP_execute()
{
 let selection = this.selectedText || this.getText();
 selection = spInsertCode + selection;
 return this.evaluate(selection);
}

mozilla-central mozilla/browser/devtools/scratchpad/scratchpad.js
http://mxr.mozilla.org/mozilla-central/source/browser/devtools/scratchpad/scratchpad.js#377
213名無しさん :2013/12/23(月)03:03:59 ID:hYYjl84az
スクラッチパッドでこんなコードが実行可能になる。

P(_TA);
214名無しさん :2013/12/23(月)03:15:22 ID:hYYjl84az
実行環境両対応と、例外処理も入れた
ローカルファイルを表示中、プロパティーlocalStorageで toString() が失敗する

var spInsertCode =
 "var _D = window.gBrowser ?gBrowser.contentDocument : document;\
  var _TA=_D.getElementById('MyTextArea');\
  if (!_TA) {\
   _TA = _D.createElement('textarea');\
   _TA.id = 'MyTextArea';\
   _TA.style = 'position:fixed;left:0;top:65;width:100%;height:50%;';\
   _TA.style.zIndex = 0xFFFF;\
   _TA.style.fontFamily = 'MS Gothic';\
   _TA.setAttribute('wrap', 'off');\
   _D.body.insertBefore(_TA, _D.body.firstChild);\
  }\
  _TA.hidden = false;\
  _TA.value = '';\
  function W(s){_TA.value+=s+'\\n';}\
  function P(o){let a=[];for(let i in o)\
   try {a.push(i+'='+(o[i]?o[i].toString().replace(/(\\f|\\n|\\r)/gm,' ').substr(0,80):i));\
   } catch(e) {a.push(i);}\
   a.sort();W(a.join('\\n'));}\n";
215名無しさん :2013/12/23(月)03:34:04 ID:hYYjl84az
関数名変えた

  function add(s){_TA.value+=s+'\\n';}\
  function prop(o){let a=[];for(let i in o)\
   try {a.push(i+'='+(o[i]?o[i].toString().replace(/(\\f|\\n|\\r)/gm,' ').\
   substr(0,80):i));} catch(e) {a.push(i);}\
   a.sort();add(a.join('\\n'));}\n";
216名無しさん :2013/12/23(月)03:38:18 ID:hYYjl84az
それが arguments かどうか、どうやって調べるのだろう
Arguments は見つからないって出る

function add(s) {console.log(s);}

function f(arg0) {
 add(arguments); // [object Arguments]
 add(arguments.constructor.name); // Object
 add(arguments.length); // 2
 add(Object.keys(arguments)); // 0,1
 add(Object.getOwnPropertyNames(arguments)); // length,callee,0,1
 add(typeof(arguments)); // object
 add(arguments.valueOf()); // [object Arguments]
 add(arguments.toString()); // "[object Arguments]"
add(arguments instanceof Arguments); // undefined
}

f("AA", "BBB");
217名無しさん :2013/12/23(月)04:13:52 ID:hYYjl84az
こっちだ
function add(s){_TA.hidden=false;_TA.value+=s+'\\n';}\
218名無しさん :2013/12/23(月)04:57:14 ID:hYYjl84az
ブラウザのタイトルバーのアイコン変更方法
main-window.icoファイルを作って、ここに置く
C:\Program Files\Mozilla Firefox\browser\chrome\icons\default\main-window.ico

↓この説明はさっぱりわからなかったけど、運良く探し出せた

window - XUL | MDN
https://developer.mozilla.org/ja/docs/XUL/window
ウィンドウのアイコンを設定するには、プラットフォーム特有のアイコンファイル
<var><windowid></var>.ico や <var><windowid></var>.xpm を作り、それらのファイルを
<var><mozilla-directory></var>/chrome/icons/default/ ディレクトリにおくか、
インストールしてください。<var><windowid></var> はウィンドウの id 属性の値です。
これによってそれぞれのウィンドウに異なるアイコンを使うことができます。
219名無しさん :2013/12/23(月)05:00:51 ID:hYYjl84az
問題が一つあって、
ブラウザとスクラッチパッドが同じidつかってる
id=main-window
220名無しさん :2013/12/23(月)22:13:59 ID:hYYjl84az
 selection = spInsertCode + selection;

前に挿入するとエラー行がおかしくなる
後に追加すると未定義になる
221名無しさん :2013/12/23(月)22:15:29 ID:hYYjl84az
と思ったけど、

function add(s) {

add = function(s) {

って違うんだな

function add(s) {
なら関数の定義が後でも未定義でない
222名無しさん :2013/12/23(月)22:17:33 ID:hYYjl84az
// 未定義が出る
add("ABC");
add = function(s) {
 console.log(s);
}

// 未定義が出ない
add2("ABC");
function add2(s) {
 console.log(s);
}
223名無しさん :2013/12/23(月)22:42:52 ID:hYYjl84az
firefoxのアイコンのpng画像

jar:file:///C:/Program%20Files/Mozilla%20Firefox/browser/omni.ja!/chrome/browser/content/branding/
224名無しさん :2013/12/24(火)18:19:22 ID:IqzdKq6nx
beep音

nsISound - XPCOM インタフェースリファレンス | MDN
https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsISound

var sound = Components.classes["@mozilla.org/sound;1"]
.createInstance(Components.interfaces.nsISound);
sound.beep();
225名無しさん :2013/12/24(火)20:57:46 ID:IqzdKq6nx
サジェストを取得

function readURL(url) {
 let x = new XMLHttpRequest();
 x.open("GET", url, false);
 x.send(null);
 return x.responseText;
}

function getSuggests(keyword) {
 let s = readURL("https://suggestqueries.google.com/complete/" +
  "search?output=firefox&client=firefox&hl=ja&qu=" + keyword);
 let o = JSON.parse(s);
 let a = [];
 for (let i = 0; i < o[1].length; i++)
  a.push(o[1][i]);
 return a;
}

document.title = getSuggests("open2ch").join();
addText(getSuggests("open2ch").join("\n"));
226名無しさん :2013/12/24(火)20:58:17 ID:IqzdKq6nx
open2chの結果

open2ch
open2ch vip
open2ch とは
open2ch 専ブラ
open2ch project
open2ch ブラウザ
open2ch まとめ
open2ch bb2c
en2ch 2chmate
平沢進 open2ch
227名無しさん :2013/12/24(火)20:59:24 ID:IqzdKq6nx
return o[1];
でいいのか
a にコピーせずに
228名無しさん :2013/12/24(火)21:00:57 ID:IqzdKq6nx
さらに短く
return JSON.parse(s)[1];
229名無しさん :2013/12/25(水)05:26:30 ID:LfKNOgdJ1
iniファイル

nsIINIParser - XPCOM Interface Reference | MDN
https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIINIParser
230名無しさん :2013/12/25(水)05:33:09 ID:LfKNOgdJ1
name=value 形式のファイル読み込み

jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/modules/KeyValueParser.jsm
231名無しさん :2013/12/25(水)15:54:43 ID:LfKNOgdJ1
>>170 はあかん
resource modules ./

Duplicate resource declaration for 'modules' ignored. と警告が出る
ブラウザコンソールでJSの警告を切っていたから気づかなかった。

D:\addon\myaddon\chrome.manifest
D:\addon\modules\lib.jsm
となってる場合、

resource my ../
で、
Components.utils.import("resource://my/modules/lib.jsm");
と読み込む

../ で D:\addon\ になるから、my/ は D:\addon\
my/modules/ は D:\addon\modules\
232名無しさん :2013/12/25(水)16:00:12 ID:LfKNOgdJ1
まだ
Components.utils.import("resource://my/modules/My.cxx");
で、これが出る
NS_ERROR_ILLEGAL_VALUE: Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIXPCComponents_Utils.import]
233名無しさん :2013/12/25(水)16:12:22 ID:LfKNOgdJ1
resource my ../
をコメントアウトしてたのが原因でした
#resource my ../
234名無しさん :2013/12/25(水)16:28:17 ID:LfKNOgdJ1
それでも モジュールの変更が反映されない
反映させるためには、 xulファイルを保存しないといけない。

chrome.manifest にある overlay で指定したファイルの日時をチェックしているのかな?
overlayでない xulファイルはウィンドウを開くときに読み込まれている
235名無しさん :2013/12/25(水)19:55:54 ID:LfKNOgdJ1
たまに見かける、見慣れない構文

アロー関数式 (=>)

関数と関数スコープ - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope#The_arrow_function_expression_(.3D%3E)
アロー関数式は実験的な機能、また Harmony (EcmaScript 6) 提案の一部であり、各ブラウザで広くサポートされてはいません。
236名無しさん :2013/12/25(水)20:50:00 ID:LfKNOgdJ1
setTimeout のコールバック内で利用する変数の使いこなし - わからん
http://d.hatena.ne.jp/kitokitoki/20111101/p1

for (var i = 0; i < fruits.length; i++) {
  (function(fruit){
    window.setTimeout(function() { alert(fruit); }, i * 1000);
  })(fruits[i]);
}
237名無しさん :2013/12/25(水)20:52:08 ID:LfKNOgdJ1
setTimeoutは追加の引数を渡せるからいいな

SCRAPBLOG : setTimeout のコールバック関数内でローカル変数を使用する
http://www.xuldev.org/blog/?p=136

for (var i = 0; i < fruits.length; i++) {
  window.setTimeout(function(aArg) { alert(aArg); }, i * 1000, fruits[i]);
}
238名無しさん :2013/12/25(水)22:13:29 ID:LfKNOgdJ1
うーん

EventTarget.addEventListener - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/EventTarget.addEventListener
リスナー関数に引数を渡す場合は、関数式を使う必要があります。

function modifyText(new_text) {
 var t2 = document.getElementById("t2");
 t2.firstChild.nodeValue = new_text;
}

function load() {
 var el = document.getElementById("t");
 el.addEventListener("click", function(){modifyText("four")}, false);
}
239名無しさん :2013/12/25(水)23:09:35 ID:LfKNOgdJ1
nsIINIParserはあまり使い勝手がよくない
セクションをそのまま取得できない
=が無い行は無視される
キーの無いセクションは取得できない
書き込みルーチンが用意されていない
240名無しさん :2013/12/25(水)23:23:31 ID:LfKNOgdJ1
自前でやると遅くなるし、
JSONは [] や " がいっぱいいる
241名無しさん :2013/12/26(木)04:11:18 ID:1CLvO5yDF
getSections()はファイルの並び順では無い
keyは並び順みたいだが、
getKeys()は、同じkey名があると、二番目以降は無視されるっぽい
242名無しさん :2013/12/26(木)04:28:41 ID:1CLvO5yDF
JSONはやい nsIINIParserの倍以上
243名無しさん :2013/12/26(木)04:54:39 ID:1CLvO5yDF
iniファイルが232KB、jsonファイルが311KBで、
下のルーチンは
var j = JSON.parse(My.readText("D:\\big.json"));
より3ms遅い

function readIniFile(filename, charset) {
 let lines = My.readText(filename, charset).split("\n");
 let a = [];
 a.header = "";
 for (let i = 0; i < lines.length; i++) {
  let s = lines[i];
  if (s[0] == "[") {
   s = s.trim();
   if (s[s.length-1] == "]") {
    if ((a.length == 0) && (i > 0)) {
     a.header = lines.slice(0, i);
    }
    a.push({section: s.slice(1, s.length-1), lines: []});
   }
  } else if (a.length > 0) {
   a[a.length-1].lines.push(s);
  }
 }
 return a;
}
244名無しさん :2013/12/26(木)05:01:31 ID:1CLvO5yDF
その上でnsIINIParserのコードで iniファイルを読み込まれていたから、
キャッシュされてreadIniFileも速かったんだ。

実際はJSONの倍以上の時間がかかった。
245名無しさん :2013/12/31(火)21:52:58 ID:ZxuLeUU7V
function brHideTag(tagName, index) {
 let a = gBrowser.contentDocument.getElementsByTagName(tagName);
 if (arguments.length == 1) {
  if (a[0]) a[0].hidden = true;
 } else {
  for (let i = 1; i < arguments.length; i++)
   if (a[arguments[i]]) a[arguments[i]].hidden = true;
 }
}

function brShowAll() {
 function enumChildren(e) {
  if ("hidden" in e)
   e.hidden = false;
  for (let i = 0; i < e.childNodes.length; i++)
   enumChildren(e.childNodes[i]);
 }
 enumChildren(gBrowser.contentDocument);
}
246名無しさん :2013/12/31(火)21:54:45 ID:ZxuLeUU7V
ヘッドラインがこうなる

function open2chHeadline() {
 brHideTag("hr", 0, 1, 3, 4, 5);
 brHideTag("br", 0);
 brHideTag("div", 0, 1); // 自動更新チェックボックス, 検索
 brHideTag("font", 1, 2); // 最新スレッドたれ流し中。。。
 brHideTag("a", 2); // 更新リンク
}
http://img.open2ch.net/p/software-1339905697-246.png
247名無しさん :2014/01/04(土)14:02:24 ID:FpITXxLqQ
全板URLとタイトル取得
>>225の readURL を使って

var bbsmenu = readURL("http://toro.open2ch.net/bbsmenu.html");
var m = bbsmenu.match(/<A .*<\/A>/igm);
var urls = [];
var titles = [];
for (let i = 0; i < m.length; i++) {
 let url = m[i].match(/<A .*\/>/i);
 if (!url) continue;
 url = url[0].slice(8, -1);
 let title = m[i].match(/>.*<\/A>/)[0].slice(1, -4);
 if (urls.indexOf(url) == -1) {
  urls.push(url);
  titles.push(title);
 }
}
addText(urls.join("\n"));
addText(titles.join("\n"));
248名無しさん :2014/01/04(土)14:44:37 ID:FpITXxLqQ
var bbsmenu = readURL("http://toro.open2ch.net/bbsmenu.html");
var m = bbsmenu.match(/<A .*<\/A>/igm);
var urls = [];
var a = [];
for (let i = 0; i < m.length; i++) {
 let aurl = m[i].match(/<A .*\/>/i);
 if (!aurl) continue;
 aurl = aurl[0].slice(8, -1);
 if (urls.indexOf(aurl) == -1) {
  urls.push(aurl);
  a.push({
   url: aurl,
   title: m[i].match(/>.*<\/A>/)[0].slice(1, -4),
   kakiko: 0
  });
 }
 //if (urls.length > 9) break;
}
249名無しさん :2014/01/06(月)01:05:51 ID:0GGGcsa6i
. と ,
点とカンマを間違えると厄介だ
250名無しさん :2014/01/06(月)12:05:22 ID:0GGGcsa6i
全板集計

var file = [];
var ita = 0;
var suresum = 0;
var kakikosum = 0;
var date = new Date();
var timer = setInterval(function(){
 document.title = ita + "/" + urls.length + " : " + urls[ita];
 if (ita >= urls.length) {
  clearInterval(timer);
  file.unshift(urls.length + "," + suresum + "," + kakikosum);
  file.unshift(date.toLocaleFormat("%Y/%m/%d %H:%M:%S"));
  let filename = "d:\\open2ch\\" + date.toLocaleFormat("%Y_%m_%d_%H_%M_%S.txt");
  writeText(file.join("\r\n"), filename);
  addText(file.join("\r\n"));
  return;
 }
 let s = readURL(urls[ita] + "subject.txt?" + (new Date()).getTime());
 let subjects = s.split("\n");
 let sum = getSum(subjects);
 a[ita].sure = sum.sure;
 a[ita].kakiko = sum.kakiko;
 suresum += a[ita].sure;
 kakikosum += a[ita].kakiko;
 file.push(getId(a[ita].url) + "," + a[ita].sure + "," + a[ita].kakiko + "," + a[ita].title);
 ita++;
}, 500);

function getId(url) {
 let r = url.lastIndexOf("/");
 let l = url.lastIndexOf("/", r - 1);
 return url.substring(l + 1, r);
}

function getSum(subjects) {
 let akakiko = 0;
 let asure = 0;
 for (let i = 0; i < subjects.length - 1; i++) {
  let m = subjects[i].match(/^.*\((.*)\).*/);
  let n = (m && m.length > 1) ? parseInt(m[1], 10) : 0;
  if (n) {
   akakiko += n;
   asure++;
  }
 }
 return {sure: asure, kakiko: akakiko};
}
251名無しさん :2014/01/06(月)12:07:19 ID:0GGGcsa6i
こんなんが取得できる
最初の行が取得日(PCの日付)
次の行が、板数,総スレ数,総カキコ数

2014/01/06 12:05:37
10,10393,386519
open2ch,178,10408,open2ch
news4vip,6837,338338,ニュー速VIP
newsplus,3121,34128,ニュース速報+
news,152,2343,ニュース速報
namazuplus,30,143,地震速報
eq,8,97,臨時地震
eqplus,2,37,臨時地震+
lifeline,16,325,緊急自然災害
be,11,219,面白ネタnews
nandemo,38,481,なんでも質問
252名無しさん :2014/01/06(月)12:09:29 ID:0GGGcsa6i
writeTextはこれ

function writeText(text, filename, charset) {
 if (!charset) charset = "UTF-8";
 let file = FileUtils.File(filename);
 let fos = FileUtils.openFileOutputStream(file, 0x02 | 0x08 | 0x20, parseInt("0664", 8), 0);
 var os = Cc["@mozilla.org/intl/converter-output-stream;1"]
  .createInstance(Ci.nsIConverterOutputStream);
 os.init(fos, charset, 0, 0x0000);
 os.writeString(text);
 os.close();
}
253名無しさん :2014/01/06(月)14:34:11 ID:0GGGcsa6i
ファイル一覧取得

function getFiles(dir, includeSubDir) {
 let a = [];
 function _get(dir) {
  let file = FileUtils.File(dir);
  let entries = file.directoryEntries;
  while(entries.hasMoreElements()) {
   let entry = entries.getNext();
   entry.QueryInterface(Components.interfaces.nsIFile);
   if (entry.isFile()) {
    a.push(entry.target);
   } else if (includeSubDir && entry.isDirectory()) {
    _get(entry.target);
   }
  }
 }
 _get(dir);
 return a;
}

var a = getFiles("D:\\JavaScript\\", true);
addText(a.join("\n"));
254名無しさん :2014/01/23(木)09:02:18 ID:uqXPo3M3j
チェックボックスの状態が変わったときにイベントは onclickではなくて、oncommand。

<checkbox id="checkbox1" label="URLを含める" oncommand="update();"/>

onclickはマウスのクリックで、その時点で checkbox.checkedはまだ変わっていない
255名無しさん :2014/01/23(木)09:17:09 ID:uqXPo3M3j
listbox.appendItem って非同期なのかな
こんな風にしないと選択できない

 setTimeout(function(){
  list1.selectedIndex = list1.itemCount - 2;
  list2.selectedIndex = list2.itemCount - 1;
  listbox1Click();
  listbox2Click();
 }, 100);
256名無しさん :2014/01/24(金)07:10:28 ID:ahC/J4C2G
JSON形式で板id, url, title を書き込む

"ita":{"119":{"url":"http://anago.open2ch.net/119/","title":"消防救急防災"},
"575":{"url":"http://kohada.open2ch.net/575/","title":"しりとり"},
"open2ch":{"url":"http://open.open2ch.net/open2ch/","title":"open2ch"},
"news4vip":{"url":"http://hayabusa.open2ch.net/news4vip/","title":"ニュー速VIP"},
"newsplus":{"url":"http://uni.open2ch.net/newsplus/","title":"ニュース速報+"},"news":

function getId(url) {
 let r = url.lastIndexOf("/");
 let l = url.lastIndexOf("/", r - 1);
 return url.substring(l + 1, r);
}

var bbsmenu = readURL("http://toro.open2ch.net/bbsmenu.html");
var m = bbsmenu.match(/<A .*<\/A>/igm);
var urls = [];
var o = {ita:{}};

for (let i = 0; i < m.length; i++) {
 let url = m[i].match(/<A .*\/>/i);
 let title = m[i].match(/>.*<\/A>/)[0].slice(1, -4);
 if (!url || !title) continue;
 url = url[0].slice(8, -1);
 if (urls.indexOf(url) == -1) {
  urls.push(url);
  o.ita[getId(url)] = {url: url, title: title};
 }
}

//let json = JSON.stringify(o, null, " ");
//let json = JSON.stringify(o, null, "\t");
let json = JSON.stringify(o);
writeText(json, "D:\\open2ch\\id.json");
257名無しさん :2014/01/24(金)07:11:46 ID:ahC/J4C2G
{"ita":{"119":{"url":"http://anago.open2ch.net/119/","title":"消防救急防災"},
の最初の { を忘れた
258名無しさん :2014/02/11(火)23:32:33 ID:GJYP6z/Xf
スクラッチパッドのコードがいじられたみたいだけど・・・

Firefox 27.0 リリースノート
http://www.mozilla.jp/firefox/27.0/releasenotes/

Firefox 27 for developers - Mozilla | MDN
https://developer.mozilla.org/en-US/Firefox/Releases/27
259名無しさん :2014/02/12(水)06:16:30 ID:BTZo1dnbk
とりあえず、スタイルシートの列挙

let w = Services.wm.getMostRecentWindow('devtools:scratchpad');
let styleSheets = w.Scratchpad.editor.container.contentDocument.styleSheets;
for (let i = 0; i < styleSheets.length; i++) {
 let ss = styleSheets[i];
 addText(ss + " " + i);
 for (let j = 0; j < ss.cssRules.length; j++) {
  addText(ss.cssRules[j].cssText);
 }
 addText("");
}

260名無しさん :2014/02/12(水)06:31:04 ID:BTZo1dnbk
スクラッチパッドの構文強調表示に関係しているのはこのへんみたい

.cm-tab { display: inline-block; }
.cm-s-default .cm-keyword { color: rgb(119, 0, 136); }
.cm-s-default .cm-atom { color: rgb(34, 17, 153); }
.cm-s-default .cm-number { color: rgb(17, 102, 68); }
.cm-s-default .cm-def { color: rgb(0, 0, 255); }
.cm-s-default .cm-variable { color: black; }
.cm-s-default .cm-variable-2 { color: rgb(0, 85, 170); }
.cm-s-default .cm-variable-3 { color: rgb(0, 136, 85); }
.cm-s-default .cm-property { color: black; }
.cm-s-default .cm-operator { color: black; }
.cm-s-default .cm-comment { color: rgb(170, 85, 0); }
.cm-s-default .cm-string { color: rgb(170, 17, 17); }
.cm-s-default .cm-string-2 { color: rgb(255, 85, 0); }
.cm-s-default .cm-meta { color: rgb(85, 85, 85); }
.cm-s-default .cm-error { color: rgb(255, 0, 0); }
.cm-s-default .cm-qualifier { color: rgb(85, 85, 85); }
.cm-s-default .cm-builtin { color: rgb(51, 0, 170); }
.cm-s-default .cm-bracket { color: rgb(153, 153, 119); }
.cm-s-default .cm-tag { color: rgb(17, 119, 0); }
.cm-s-default .cm-attribute { color: rgb(0, 0, 204); }
.cm-s-default .cm-header { color: blue; }
.cm-s-default .cm-quote { color: rgb(0, 153, 0); }
.cm-s-default .cm-hr { color: rgb(153, 153, 153); }
.cm-s-default .cm-link { color: rgb(0, 0, 204); }
.cm-negative { color: rgb(221, 68, 68); }
.cm-positive { color: rgb(34, 153, 34); }
.cm-header, .cm-strong { font-weight: bold; }
.cm-em { font-style: italic; }
.cm-link { text-decoration: underline; }
.cm-invalidchar { color: rgb(255, 0, 0); }
261名無しさん :2014/02/12(水)06:38:04 ID:BTZo1dnbk
んでもって、 userChrome.css で

.cm-comment { color: navy !important; font-weight: bold !important; }
.cm-keyword { color: black !important; font-weight: bold !important; }
.cm-string { color: blue !important; font-style: normal !important; }

/*
.cm-s-default は何なのか不明
*/

フォントはどこで大きくするんだ?
あと、普通に日本語が入力できるようになった
262名無しさん :2014/02/12(水)07:01:31 ID:BTZo1dnbk
mozilla-central mozilla/browser/devtools/sourceeditor/codemirror/codemirror.css
http://mxr.mozilla.org/mozilla-central/source/browser/devtools/sourceeditor/codemirror/codemirror.css
263名無しさん :2014/02/12(水)07:08:31 ID:BTZo1dnbk
わかったこれだ !importantもいる

.CodeMirror { font-size: 12pt !important; }

↓11ptと12ptの違い

http://img.open2ch.net/p/software-1339905697-263.png
264名無しさん :2014/02/12(水)07:15:02 ID:BTZo1dnbk
orionはどうなったのだろう?

mozilla-central mozilla/browser/devtools/sourceeditor/codemirror/README
http://mxr.mozilla.org/mozilla-central/source/browser/devtools/sourceeditor/codemirror/README
265名無しさん :2014/02/12(水)07:25:38 ID:BTZo1dnbk
あ、しかもなんか上書きができる

フルスクリーンカーソルにならんかな
266名無しさん :2014/02/12(水)07:42:53 ID:BTZo1dnbk
上書き時のカーソル
反転させる方法が分からない

.CodeMirror div.CodeMirror-cursor.CodeMirror-overwrite {
width: 6pt !important;
border: 0;
background: black;
z-index: 1;
}
267名無しさん :2014/02/12(水)10:06:59 ID:BTZo1dnbk
CodeMirror は切り貼り時にインデント周りでバグがある
勝手にずらされてしまう
268名無しさん :2014/02/12(水)10:26:22 ID:BTZo1dnbk
2行目行頭でエンターキーを押すと、5より左にあった空白が消える
http://img.open2ch.net/p/software-1339905697-268.png
269名無しさん :2014/02/12(水)10:30:02 ID:BTZo1dnbk
3行目行頭でエンターキーを押すと、4行目でインデントされる
これはバグとはいえないか
でも、オートインデント禁止だ
http://img.open2ch.net/p/software-1339905697-269.png
270名無しさん :2014/02/12(水)10:30:54 ID:BTZo1dnbk
268はインデントをそろえられたってことだ
確認した
271名無しさん :2014/02/12(水)10:45:24 ID:BTZo1dnbk
「最近開いたファイルを開く」からファイルを開くと
dirty == true になる
272名無しさん :2014/02/12(水)10:50:31 ID:BTZo1dnbk
jar:file:///C:/Program%20Files/Mozilla%20Firefox/browser/omni.ja!/chrome/browser/content/browser/devtools/codemirror/
jar:file:///C:/Program%20Files/Mozilla%20Firefox/browser/omni.ja!/chrome/browser/content/browser/devtools/codemirror/codemirror.js
273名無しさん :2014/02/12(水)11:23:18 ID:BTZo1dnbk
スマートインデント禁止

let w = Services.wm.getMostRecentWindow('devtools:scratchpad');
w.Scratchpad.editor.config.smartIndent = false;
274名無しさん :2014/02/12(水)23:43:34 ID:wyF7LOe3L
ほぉ・・・

* {
filter: url("data:image/svg+xml;utf8,\
<svg xmlns=\'http://www.w3.org/2000/svg\'>\
<filter id=\'invertcolor\'>\
<feColorMatrix type=\'matrix\' \
values=\'\
-1 0 0 0 1 \
0 -1 0 0 1 \
0 0 -1 0 1 \
0 0 0 1 0\
\'/></filter></svg>#invertcolor");
}
275名無しさん :2014/02/13(木)05:04:29 ID:9BDh0yuDT
全部反転しました(激重)
http://img.open2ch.net/p/software-1339905697-275.png
276名無しさん :2014/02/13(木)05:07:23 ID:9BDh0yuDT
filter - CSS | MDN
https://developer.mozilla.org/ja/docs/Web/CSS/filter
>Gecko notes
>Gecko currently only implements the url() form of the filter property.
277名無しさん :2014/02/13(木)05:31:47 ID:9BDh0yuDT
キャレット位置の反転はよく分からないので、四角にしようと思ったら、
右辺だけ描画されないけど、まいっか。

.CodeMirror div.CodeMirror-cursor.CodeMirror-overwrite {
border: 1px solid black;
width: 6pt !important;
z-index: 3;
}
278名無しさん :2014/02/13(木)15:41:16 ID:9BDh0yuDT
全角空白のサイズだけが変わるため、計算時と表示時のフォントサイズが違うとずれることがある

// 11pt zenWidth=10 hanWidth=5
// 12pt zenWidth=11 hanWidth=5
let zenChar = " ";
let hanChar = " ";
let zenhanChar = "  ";
let c = document.createElement("canvas");
let ctx = c.getContext("2d");
function f(pt) {
 ctx.font = pt + "pt MS PGothic";
 let zenWidth = ctx.measureText(zenChar).width;
 let hanWidth = ctx.measureText(hanChar).width;
 let zenhanWidth = ctx.measureText(zenhanChar).width;
 let zeroWidth = ctx.measureText("0").width;
 addText("font=" + ctx.font);
 addText("zenWidth=" + zenWidth);
 addText("hanWidth=" + hanWidth);
 addText("zehhanWidth=" + zenhanWidth);
 addText("zeroWidth=" + zeroWidth);
 addText(fillChar(zenChar, zenhanWidth) + "zenChars");
 addText(fillChar(zenhanChar, zenWidth) + "zenhanChars");
 addText("");
}
f(11);
f(12);
279名無しさん :2014/02/13(木)20:46:10 ID:KtOUIxmyW
>>274
ランド2色法
画像の「赤」と「緑をグレーに変換したもの」の合成で赤以外の色が見える錯覚

img {
filter: url("data:image/svg+xml;utf8,\
<svg xmlns=\'http://www.w3.org/2000/svg\'>\
<filter id=\'land2color\'>\
<feColorMatrix type=\'matrix\' \
values=\'\
0.5 0.5 0 0 0 \
0 0.5 0 0 0 \
0 0.5 0 0 0 \
0 0 0 1 0 \
\'/></filter></svg>#land2color");
}
280名無しさん :2014/02/17(月)06:46:57 ID:Wpq4dHa4n
jar:file:///C:/Program%20Files/Mozilla%20Firefox/browser/omni.ja!/chrome/browser/content/browser/devtools/scratchpad.js
jar:file:///C:/Program%20Files/Mozilla%20Firefox/browser/omni.ja!/modules/devtools/sourceeditor/editor.js
jar:file:///C:/Program%20Files/Mozilla%20Firefox/browser/omni.ja!/chrome/browser/content/browser/devtools/codemirror/codemirror.js

mozilla-central mozilla/browser/devtools/scratchpad/
http://mxr.mozilla.org/mozilla-central/source/browser/devtools/scratchpad/

mozilla-central mozilla/browser/devtools/sourceeditor/
http://mxr.mozilla.org/mozilla-central/source/browser/devtools/sourceeditor/
281名無しさん :2014/02/18(火)07:32:23 ID:hFvuxO+lb
insertTextAtCaretが無くなったので
scratchpad の オーバーレイファイル(.xul)で

function spInsertTextAtCaret(text) {
 Scratchpad.editor.insertText(text, Scratchpad.editor.getCursor());
}

function spSetCaretPos(editor, x, y) {
 Scratchpad.editor.setCursor({line: y, ch: x});
}

function spGetCaretPos(editor) {
 let c = Scratchpad.editor.getCursor();
 return {x: c.ch, y: c.line};
}

function spGetLine(editor, y) {
 return Scratchpad.editor.getText(y);
}
282名無しさん :2014/03/01(土)05:50:32 ID:8LwXkKD4W
ここにチェックが無い場合、
リンクの上で、「リンクを新しいタブで開く」を実行すると・・・

http://img.open2ch.net/p/software-1339905697-282.png
283名無しさん :2014/03/01(土)05:52:57 ID:8LwXkKD4W
これが
284名無しさん :2014/03/01(土)05:53:53 ID:8LwXkKD4W
こうなるわけで
285名無しさん :2014/03/01(土)05:56:14 ID:8LwXkKD4W
なってねー
283のやり直し
これが、
286名無しさん :2014/03/01(土)06:01:43 ID:8LwXkKD4W
あれ、書き込めなくなった
あ、そうか、isOekakiDone を 1にしないとダメになったんだ

if( isOekakiDone == 1 &&

sketch.bind("mousedown", function(){
 isOekakiDone = 1;
});

http://open.open2ch.net/lib/read.cgi.js?1393585148
287名無しさん :2014/03/01(土)06:06:35 ID:8LwXkKD4W
まあいいや。 「リンクを新しいタブで開く」を実行したときにタブが切り替わらない場合、

function brDocLoad(event) {
ここでは gBrowser では無くて、event.target を使わないとダメって言いたかった
}

function brLoad() {
gBrowser.addEventListener("load", brDocLoad, true);
}

addEventListener("load", brLoad, false);
288名無しさん :2014/03/01(土)06:30:06 ID:8LwXkKD4W
isOekakiDone = 1; を追加
他に使ってる人、いなさそうですが

function open2chPasteImage(uri) {
 let img = new Image();
 img.onload = function(event) {
  let canvas = gBrowser.contentDocument.createElement("canvas");
  canvas.width = event.target.width;
  canvas.height = event.target.height;
  canvas.getContext("2d").drawImage(event.target, 0, 0);
  let e = gBrowser.contentDocument.getElementById("sketch");
  e.dataset.base64img = canvas.toDataURL();

  let sp = Scratchpad.ScratchpadManager.openScratchpad({
   filename: "",
   text:
    "isOekakiDone = 1;\n" +
    "location.hash = '#new_res';\n" +
    "$('#oekakiMode').attr('checked', true);\n" +
    "$('#oekakiCanvas').show();\n" +
    "var s = $('#sketch').sketch();\n" +
    "var img = new Image();\n" +
    "img.onload = function() {\n" +
    " s.el.width = img.width;\n" +
    " s.el.height = img.height;\n" +
    " s.baseImageURL = 'http://toro.open2ch.net/image/logo.gif';\n" + // dumbr
    " s.baseImageCache = img;\n" +
    " s.context.drawImage(img, 0, 0);\n" +
    "}\n" +
    "img.src = s.el.dataset.base64img;\n"
  });

  // sp.Scratchpad がまだのため、onload が必要
  sp.onload = function() {
   this.Scratchpad.addObserver({
    onReady: function(asp) {
     asp.dirty = false;
     asp.run();
     asp.close();
    }
   });
  }
 };

 img.src = uri;
}
289名無しさん :2014/03/09(日)07:35:57 ID:JpC5rJivw
全板スレタイ対象の検索
http://open.open2ch.net/headline.cgi?q=test

板指定
http://open.open2ch.net/headline.cgi?q=test&bbs=newsplus

p=0 ページ(0~)
mode=all スレ一覧
mode=gomi ゴミ箱(仮)
mode=reuse 復活スレ
o=created スレ作成順
o=updated レス順
o=speed 勢い順
rn=500 レス数
n=100 表示数
q=test 検索キーワード
bbs=newsplus 板ID
290名無しさん :2014/03/09(日)07:55:27 ID:JpC5rJivw
// スレッドタイトル検索
function open2chTitleSearch(keyword, bbs) {
 let k = keyword || prompt(SEARCH_KEYWORD);
 if (k) {
  let uri = "http://open.open2ch.net/headline.cgi?";
  if (bbs) uri += "bbs=" + bbs + "&";
  uri += "q=" + k;
  uri = encodeURI(uri);
  gBrowser.selectedTab = gBrowser.addTab(uri);
 }
}
291名無しさん :2014/03/09(日)07:56:17 ID:JpC5rJivw
こっちでいいのか
let uri = "http://open2ch.net/headline.cgi?";
292名無しさん :2014/03/10(月)05:40:56 ID:M0OmmReCN
これではタイトルを設定できない

http://open.open2ch.net/open2ch/?subject=test
293名無しさん :2014/03/11(火)06:08:47 ID:dx6IBEaqA
これで書き込むとき分かりそうだが

gBrowser.contentWindow.onsubmit = function (event) {
//showProp(event);
showProp(event.target);
}
294名無しさん :2014/03/11(火)06:56:15 ID:dx6IBEaqA
// 板一覧をjsonで取得

function getId(url) {
 let r = url.lastIndexOf("/");
 let l = url.lastIndexOf("/", r - 1);
 return url.substring(l + 1, r);
}

let menuurl = "http://toro.open2ch.net/pc_menu.html";
let menu = readURL(menuurl);
if (!menu) addText("ファイルが見つかりません:" + menuurl);
//addText(menu);

// カテゴリ「人気」は小文字のa
let m = menu.match(/<A .*<\/A>/gm);
//addText(m.join("\n"));

let urls = [];
let a = [];
let o = {ita:{}};

for (let i = 0; i < m.length; i++) {
 // ランキングのurlは最後に / が付いていないので、除去される
 // <A HREF=http://open2ch.net/dev/ranking.cgi>ランキング</A><br>

 let url = m[i].match(/<A .*\/>/i);
 let title = m[i].match(/>.*<\/A>/)[0].slice(1, -4);
 if (!url || !title) continue;
 url = url[0].slice(8, -1);
 if (urls.indexOf(url) == -1) {
  urls.push(url);
  a.push(getId(url) + "=" + url + "," + title);
  o.ita[getId(url)] = {url: url, title: title};
 }
}

addText(a.length);
addText(a.join("\n"));
//let json = JSON.stringify(o, null, " ");
//let json = JSON.stringify(o, null, "\t");
let json = JSON.stringify(o);
295名無しさん :2014/03/14(金)13:45:43 ID:nyXB2YUdR
購読中RSSの一覧をテキストファイルにするアドオンってない?
サイト名、RSSのURL、サイトのURL、を列挙するような感じのもの。
296名無しさん :2014/03/16(日)07:09:40 ID:QzWBPtoXQ
整数の除算で結果も整数

Math.imul - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/imul
297名無しさん :2014/03/16(日)07:10:05 ID:QzWBPtoXQ
Mozilla における ECMAScript 6 のサポート - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla
298名無しさん :2014/03/23(日)07:45:02 ID:sGhx2Cp4g
test
299名無しさん :2014/03/25(火)13:41:32 ID:OdDse3pjY
GETだと全部読み込むから、HEADを使う

function opGetResponseHeader(url, header) {
 let x = new XMLHttpRequest();
 x.open("HEAD", url, false);
 x.send(null);
 return x.getResponseHeader(header);
}

var url = "http://toro.open2ch.net/menu/pc_menu.html?" + (new Date()).getTime();

opPrint(url);
opPrint(getResponseHeader(url, "last-modified"));
300名無しさん :2014/03/25(火)16:53:15 ID:OdDse3pjY
ダメ title = \u3010 + open2chMenu.ita[bbs].title + \u3011 + title + "(" + n + ")";
イイ title = "\u3010" + open2chMenu.ita[bbs].title + "\u3011" + title + "(" + n + ")";
301名無しさん :2014/04/02(水)13:10:13 ID:Tip69X9FQ
スクリーンショットのファイル名
Screen Shot 2014-04-02 at 13.06.36.png
302名無しさん :2014/04/02(水)13:12:18 ID:Tip69X9FQ
screenshot コマンド

mozilla-central mozilla/browser/devtools/commandline/BuiltinCommands.jsm
http://mxr.mozilla.org/mozilla-central/source/browser/devtools/commandline/BuiltinCommands.jsm#1651
303名無しさん :2014/04/02(水)13:30:15 ID:Tip69X9FQ
GCLI: Graphical Command Line
http://mozilla.github.io/gcli/

gcli.jsm
jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/modules/devtools/gcli.jsm
304名無しさん :2014/04/02(水)13:33:47 ID:Tip69X9FQ
コンテキストにウィンドウを描画なのか

let ctx = canvas.getContext("2d");
ctx.drawWindow(window, left, top, width, height, "#fff");
let data = canvas.toDataURL("image/png", "");

その下がクリップボードへのコピーなのか?

http://mxr.mozilla.org/mozilla-central/source/browser/devtools/commandline/BuiltinCommands.jsm#1779
305名無しさん :2014/04/03(木)17:56:05 ID:TUxQk5ufQ
Index of /bbs2ch/bbs2chreader - bbs2chreader - SourceForge.JP
http://sourceforge.jp/cvs/view/bbs2ch/bbs2chreader/
306名無しさん :2014/04/04(金)11:18:54 ID:w0nv6VaPd
view-source: が無いと、ページ読み込みエラーが出る
リモート XUL
このページは、既定では利用できなくなった未対応の技術が使用されています。

view-source:を付ければ、表示可能
<a href="view-source:jar:file:///C:/Program%20Files/Mozilla%20Firefox/browser/omni.ja!/chrome/browser/content/browser/browser.xul">browser.xul</a>
307名無しさん :2014/04/04(金)11:23:51 ID:w0nv6VaPd
サイドバーの追加 - XUL | MDN
https://developer.mozilla.org/ja/docs/XUL/School_tutorial/Adding_sidebars

Adding sidebars - Mozilla | MDN
https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions/XUL_School/Adding_sidebars
308名無しさん :2014/04/04(金)11:28:21 ID:w0nv6VaPd
履歴サイドバー
view-source:chrome://browser/content/history/history-panel.xul

<broadcaster id="viewHistorySidebar" autoCheck="false" sidebartitle="&historyButton.label;"
type="checkbox" group="sidebar"
sidebarurl="chrome://browser/content/history/history-panel.xul"
oncommand="toggleSidebar('viewHistorySidebar');"/>
309名無しさん :2014/04/04(金)11:29:22 ID:w0nv6VaPd
ブックマークサイドバー
view-source:chrome://browser/content/bookmarks/bookmarksPanel.xul
310名無しさん :2014/04/04(金)12:00:17 ID:w0nv6VaPd
Firefoxのサイドバーを作ろう (XUL形式のアドオンでbrowser要素を設定する方法) - 主に言語とシステム開発に関して
http://d.hatena.ne.jp/language_and_engineering/20081203/1228262334

独自サイドバー firefox - Google 検索
http://www.google.co.jp/search?q=%E7%8B%AC%E8%87%AA%E3%82%B5%E3%82%A4%E3%83%89%E3%83%90%E3%83%BC+firefox
311名無しさん :2014/04/05(土)18:02:49 ID:VbHZ1eBY6
サイドバーにbrowser要素でwebページを表示しても、
右クリックで普通のwebページ用のコンテキストメニューが出ない。

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<window xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:html="http://www.w3.org/1999/xhtml"
 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
 title="open2ch" id="open2chsidebar">
 <browser id="open2chsidebar" type="content-primary" width="50" height="500"
  src="http://open2ch.net/menu/pc_menu.html" context="contentAreaContextMenu"
  flex="1">
 </browser>
</window>

ContextMenus - XUL | MDN
https://developer.mozilla.org/ja/docs/XUL/PopupGuide/ContextMenus

browser - XUL | MDN
https://developer.mozilla.org/ja/docs/XUL/browser#wikiArticle
312名無しさん :2014/04/06(日)12:07:25 ID:G78kmfCM3
このへんみてもわかんない

mozilla-central freetext search "context="contentAreaContextMenu""
http://mxr.mozilla.org/mozilla-central/search?string=context%3D%22contentAreaContextMenu%22
313名無しさん :2014/04/08(火)16:28:58 ID:N5Ss07zec
スマートインデントと、勝手にカッコが追加されるのを抑制

let c = Scratchpad.editor.config;
c.smartIndent = false;
c.autoCloseBrackets = false;
314名無しさん :2014/04/18(金)16:34:15 ID:kIJkGwsr0
autocheck は小文字。 autoCheck ではダメ。
setAttribute で設定する必要がある。 e.checked に代入するだけではダメ。

<?xml version="1.0"?>
<overlay id="testaddon" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

 <menubar id="main-menubar">
  <menu id="testMenu" label="TEST" insertafter="tools-menu" accesskey="C">
   <menupopup id="brTestPopup" onpopupshowing="testPopup();">
    <menuitem id="testCheck" label="CHECK TEST" type="checkbox" autocheck="false" accesskey="C"
     oncommand="testClick();"/>
   </menupopup>
  </menu>
 </menubar>

<script><![CDATA[
function testPopup() {
 // eventは無い
 let e = document.getElementById("testCheck");
 e.checked = !e.checked;
 e.setAttribute("checked", e.checked);
 document.title = e.checked;
}

function testClick() {
}

]]></script>
</overlay>
315名無しさん :2014/04/22(火)20:24:37 ID:T8z032I33
モジュールがsjisで書かれている場合、これで文字化け防げた

My.sjisToUnicode = function My_sjisToUnicode(sjistext) {
 var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
  .getService(Ci.nsIScriptableUnicodeConverter);
 converter.charset = 'Shift_JIS';
 return converter.ConvertToUnicode(sjistext);
}

モジュールのコード
w.prompt(My.sjisToUnicode("open2chスレタイ検索キーワード"));
316名無しさん :2014/04/24(木)22:41:37 ID:SBE74AvK4
File I/O - Code snippets | MDN
https://developer.mozilla.org/ja/docs/Code_snippets/File_I_O
非同期のサンプルが動かない
sl.init で、
"Could not convert JavaScript argument arg 0 [nsIStreamLoader.init]
でます

Components.utils.import("resource://gre/modules/FileUtils.jsm");
let file = FileUtils.File("d:\\test.txt");

// |file| is nsIFile
var ios = Components.classes["@mozilla.org/network/io-service;1"]
          .getService(Components.interfaces.nsIIOService);
var fileURI = ios.newFileURI(file);
var channel = ios.newChannelFromURI(fileURI);
var observer = {
 onStreamComplete : function(aLoader, aContext, aStatus, aLength, aResult)
 {
  alert(aResult);
 }
};
var sl = Components.classes["@mozilla.org/network/stream-loader;1"]
          .createInstance(Components.interfaces.nsIStreamLoader);
console.log(channel.name);
sl.init(channel, observer, null);
317名無しさん :2014/04/25(金)17:07:03 ID:5TxRH92NP
非同期読み込み

XMLHttpRequest - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest

XMLHttpRequest の利用 - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

xhr.responseType = "text"; が無いとパースされて、
"JSエラー:タグの対応が間違っています。終了タグが必要です: </meta> が出る"や、
"整形式になっていません。"のエラーが出る。

function T(s) { addText ? addText(s) : console.log(s); }

function asyncReadURI(uri, callback) {
 let xhr = new XMLHttpRequest();
 xhr.open("GET", uri, true);
 xhr.responseType = "text"; // これが無いとエラー
 xhr.onload = function () { callback(xhr.responseText); }
 xhr.onerror = function () { console.error(xhr.statusText); }
 xhr.send(null);
}

T("■begin");
asyncReadURI("file:///D:/test.txt", function(text){T(text);});
T("■end");
318名無しさん :2014/04/25(金)18:44:57 ID:efLqaZRzY
ここにある、editorsの取得方法が分からない
getText()を置き換えるために必要なのだが

jar:file:///C:/Program%2520Files/Mozilla%2520Firefox/browser/omni.ja!/modules/devtools/sourceeditor/editor.js
const editors = new WeakMap();

WeakMap - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/WeakMap

 getText: function (line) {
  let cm = editors.get(this);

  if (line == null)
   return cm.getValue();

  let info = cm.lineInfo(line);
  return info ? cm.lineInfo(line).text : "";
 },
319名無しさん :2014/04/25(金)20:12:23 ID:efLqaZRzY
  let cm = editors.get(this);
が出来ないと、上書きモードかどうか取得できない
320名無しさん :2014/04/25(金)22:16:53 ID:efLqaZRzY
>>296
のimulは除算じゃなくて、乗算だった
除算が欲しいのに・・・

8 div 3 で 2を返して欲しいわ
321名無しさん :2014/04/27(日)04:44:17 ID:xC0rlF4yC
8/3|0でええやん
322名無しさん :2014/04/27(日)05:57:37 ID:kqKJxfFzC
いや、2が出ましたが、実数のビット毎のORじゃなくて、
整数に型変換して 0 と OR を取るってことか

document.title = 8/3|0;

/の方が優先順位が高い

https://developer.mozilla.org/ja/docs/JavaScript/Reference/Operators/Bitwise_Operators
>オペランドは 32 ビット整数に変換され、ビット列(0 と 1)として表現されます。

JavaScript 切り捨て ビット演算 - Google 検索
https://www.google.com/search?q=JavaScript+切り捨て+ビット演算
323名無しさん :2014/04/27(日)11:07:34 ID:kqKJxfFzC
まとめ表示
http://uni.open2ch.net/ajax/get_matome.cgi?bbs=newsplus&key=1398169392
- 04/22 22:55 【ネット】 2chまとめサイト 大手サイトが続々2ch.scをまとめ開始 時事ネタやゲームやいろいろ
- 04/23 02:30 【ネット】 大手2chまとめサイトが続々2ch.scをまとめ開始 2ちゃれば炒め

http://uni.open2ch.net/ajax/check_new_thread.cgi/newsplus/1398169392/
updated:251
324名無しさん :2014/04/27(日)11:12:54 ID:kqKJxfFzC
ツイッター連携消す

let twfunc = doc.getElementById("twfunc");
twfunc.parentNode.hidden = true;
325名無しさん :2014/04/27(日)11:14:39 ID:kqKJxfFzC
uni.open2ch.netは open2ch.net でもいい
326名無しさん :2014/04/27(日)19:53:15 ID:3lOlrOkvB
XMLHttpRequest の HTML パース処理 | MDN
https://developer.mozilla.org/ja/docs/HTML_in_XMLHttpRequest
XMLHttpRequest で HTML を DOM として取得するのは、XML を DOM として取得するのとそう変わりません。
ただ、非同期モードを利用しなければいけないことと、
XMLHttpRequest オブジェクトの open() をコールしたあと、send() をコールする前に responseType プロパティに "document" を指定し、
明示的に文書をリクエストしなければいけないという違いがあります。

var xhr = new XMLHttpRequest();
xhr.onload = function() {
 alert(this.responseXML.title);
}
xhr.open("GET", "file.html");
xhr.responseType = "document";
xhr.send();
327名無しさん :2014/04/27(日)20:33:51 ID:kqKJxfFzC
サーバに関係なく使える

http://hayabusa.open2ch.net/dev/toukei.cgi
328名無しさん :2014/04/27(日)20:39:57 ID:kqKJxfFzC
でも読み込めない
329名無しさん :2014/04/27(日)22:06:24 ID:kqKJxfFzC
function getDocument(uri, callback) {
let w = Services.wm.getMostRecentWindow("navigator:browser");
let x = new w.XMLHttpRequest();
x.onerror = function(event) {
alert("ERROR: " + x.status);
}
x.onload = function(event) {
callback(x.responseXML);
}
x.open("GET", uri);
x.responseType = "document";
x.send(null);
}

function addMessage(text) {
let w = Services.wm.getMostRecentWindow("navigator:browser").document.commandDispatcher.focusedWindow;
let MESSAGE = w.document.getElementById("MESSAGE");
if (MESSAGE)
MESSAGE.value += (MESSAGE.value ? "\n" : "") + text
else
console.log(text);
}

function getTodaySeconds() {
let today = new Date((new Date()).toDateString());
return Math.floor((Date.now() - today.getTime()) / 1000);
}

function perDay(n) {
return Math.floor(n / getTodaySeconds() * 60 * 60 * 24);
}

let uri = "http://open2ch.net/dev/toukei.cgi";
getDocument(uri, function(doc) {
let tbody = doc.getElementsByTagName("TBODY")[0];
let text = tbody.textContent.replace(/^(\f|\r|\n)/gm, "");
let a = text.match(/\d+/gm); //bbs新スレ,bbs投稿,bbsID数,kome投稿数,kome接続数
let s = "掲示板の合計:\n" +
"新スレ:+" + a[0] + " (+" + perDay(a[0]) + "/日)\n" +
"投稿:+" + a[1] + "件" + " (+" + perDay(a[1]) + "/日)\n" +
"ID数:" + a[2] + "ID" + " (" + perDay(a[2]) + "/日)\n" +
"\n" +
"komeの合計:\n" +
"投稿数:" + a[3] + "件" + " (" + perDay(a[3]) + "/日)\n" +
"接続数:" + a[4] + "人" + " (" + perDay(a[4]) + "/日)\n";
addMessage(s);
});
330名無しさん :2014/04/27(日)22:14:46 ID:kqKJxfFzC
インデントの変換忘れた

モジュールでも使えるようにこうしたけど、スクラッチパッド専用なら、new XMLHttpRequest() だけでいい。
let w = Services.wm.getMostRecentWindow("navigator:browser");
let x = new w.XMLHttpRequest();
331名無しさん :2014/04/29(火)08:19:00 ID:631Hn4olW
これ消す

let e;
e = document.getElementById("PanelUI-button");
e.hidden = false;
http://img.open2ch.net/p/software-1339905697-331.png
332名無しさん :2014/04/29(火)08:19:36 ID:631Hn4olW
trueだ
スクリーンショット取るために表示したため false にしてた
333名無しさん :2014/04/29(火)08:34:19 ID:631Hn4olW
タブバーを下にする

let toolbar = document.getElementById("TabsToolbar");
let navbar = document.getElementById("nav-bar");
navbar.parentElement.insertBefore(navbar, toolbar);
334名無しさん :2014/04/29(火)09:12:20 ID:631Hn4olW
mozilla-central mozilla/browser/base/content/tabbrowser.css
http://mxr.mozilla.org/mozilla-central/source/browser/base/content/tabbrowser.css

mozilla-central mozilla/browser/base/content/browser.css
http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.css
335名無しさん :2014/04/29(火)09:50:39 ID:631Hn4olW
アドオンバーが消えた理由
ナビゲーションバーの右が開いてるから、そっちへ置くべきってことかな?
メッセージの表示に使ってるのだが

749804 – Remove add-on bar and move content in navigation bar
https://bugzilla.mozilla.org/show_bug.cgi?id=749804
336名無しさん :2014/04/29(火)09:59:13 ID:wT9jmSLUr
自分でステータスバーを付けたい場合はこんなのか

<vbox flex="1" id="browser-panel">
<toolbar id="newstatusbar" mode="icons" iconsize="small" customizable="true">
</toolbar>
</vbox>
337名無しさん :2014/04/29(火)10:17:45 ID:631Hn4olW
ver28の頃のソース

mozilla-release: files
http://hg.mozilla.org/releases/mozilla-release/file/1a6a6bae8606/browser/base/content

mozilla-release: browser/base/content/browser.xul@1a6a6bae8606
http://hg.mozilla.org/releases/mozilla-release/file/1a6a6bae8606/browser/base/content/browser.xul

mozilla-release: browser/base/content/browser.css@1a6a6bae8606
http://hg.mozilla.org/releases/mozilla-release/file/1a6a6bae8606/browser/base/content/browser.css
338名無しさん :2014/04/29(火)11:01:14 ID:631Hn4olW
/* パーソナルツールバーにあるブックマークアイコンを消す */
toolbarbutton.bookmark-item > .toolbarbutton-icon {
display: none;
}
toolbarbutton.bookmark-item {
margin-left: 4px !important;
margin-right: 4px !important;
}
339名無しさん@おーぷん :2014/04/30(水)04:57:32 ID:3rL963MnI
くっ、文字のボタンをナビゲーションバーに追加できない
340名無しさん@おーぷん :2014/04/30(水)06:57:12 ID:3rL963MnI
MozillaZine.jp フォーラム • フォーラム閲覧 - 拡張機能
http://forums.mozillazine.jp/viewforum.php?f=26&sid=d68ee4a19264b2021a83cd3debfcc581
341名無しさん@おーぷん :2014/04/30(水)12:34:37 ID:3rL963MnI
Firefox 29 for developers - Mozilla | MDN
https://developer.mozilla.org/ja/docs/Mozilla/Firefox/Releases/29
342名無しさん@おーぷん :2014/05/01(木)06:40:02 ID:Wn8pmtlVW
MozillaZine.jp フォーラム • トピック - 【レポート】Firefox 29.0 への更新後に操作性に戸惑ったら見てください
http://forums.mozillazine.jp/viewtopic.php?f=2&t=14750
343名無しさん@おーぷん :2014/05/01(木)10:28:16 ID:Wn8pmtlVW
ブラウザコンソールの高さが狭すぎると保存されない?
344名無しさん@おーぷん :2014/05/01(木)11:51:31 ID:Wn8pmtlVW
白々メモ帳 Firefox29のタブとナビゲーションツールバーの高さを調整する
http://shira2paper.blog.fc2.com/blog-entry-50.html
345名無しさん@おーぷん :2014/05/02(金)08:24:37 ID:p6eSmSSqj
#Firefox 29 Australis用のuserChrome.css - nuru
http://k9q.hateblo.jp/entry/2014/05/01/110530

Firefox 29以降では、URLバーからボタンを分離してカスタマイズするにはアドオンが必要になっています - WebStudio
http://www.d-toybox.com/studio/weblog/show.php?mode=single;id=2014050100
346名無しさん@おーぷん :2014/05/02(金)09:23:39 ID:p6eSmSSqj
Australis アドオン互換性情報 – パート 1: ツールバー | Mozilla Developer Street (modest)
https://dev.mozilla.jp/2013/12/australis-for-add-on-developers-1/
347名無しさん@おーぷん :2014/05/02(金)14:30:40 ID:p6eSmSSqj
Extension Development • mozillaZine Forums
http://forums.mozillazine.org/viewforum.php?f=19
348名無しさん@おーぷん :2014/05/03(土)05:56:02 ID:DnEd5oGJH
文字出た

let navbar = document.getElementById("nav-bar");
navbar.setAttribute("mode", "text");

http://img.open2ch.net/p/software-1339905697-348.png
349名無しさん@おーぷん :2014/05/03(土)06:04:13 ID:DnEd5oGJH
初心者向けのUIというけど、それまでのUIも隠しオプションで出来るようにしてくれたらよかったのに
351名無しさん@おーぷん :2014/05/10(土)04:49:02 ID:AYxLsrMzf
Application.restart() では消えないけど、
Application.quit() では消える変数はどうやって作るのですか?
352名無しさん@おーぷん :2014/05/27(火)18:54:50 ID:ApDkh9f3G
特定の文字だけ強調/非表示する事出来ますか。

間違っていたらすいませんですが、
Stylishとかだと要素込みじゃないと出来ないですよね?
a href 等の要素なども何も無い特定の文字列だけの箇所を
強調表示させたいのです。可能なら非表示(見えないくらい
縮小表示など含む)も行いたいです。

正規表現で!っとか贅沢は言いません。
353名無しさん@おーぷん :2014/07/15(火)16:26:34 ID:4lCFeQJdH
複数板のスレタイ検索
スレIDがそのままスレ作成日なので、ソート可能だ
最後のレス日が分からないため、レス順でソートはできない
http://img.open2ch.net/p/software-1339905697-353.png
354名無しさん@おーぷん :2014/07/30(水)22:34:00 ID:eYjVSJNWb
drawWindow

CanvasRenderingContext2D - Web API Interfaces | MDN
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D#drawWindow()
355名無しさん@おーぷん :2014/07/31(木)09:39:31 ID:UeXABPodf
Canvas - Code snippets | MDN
https://developer.mozilla.org/ja/docs/Code_snippets/Canvas
canvas のイメージをファイルに保存する

function saveCanvas(canvas, destFile) {
 // ファイルパス文字列を nsIFile に変換する
 var file = Components.classes["@mozilla.org/file/local;1"]
            .createInstance(Components.interfaces.nsILocalFile);
 file.initWithPath(destFile);

 // canvas からデータ URL 形式を作成し、ソースとターゲットの URI を作成します
 var io = Components.classes["@mozilla.org/network/io-service;1"]
           .getService(Components.interfaces.nsIIOService);
 var source = io.newURI(canvas.toDataURL("image/png", ""), "UTF8", null);
 var target = io.newFileURI(file)

 // canvas データを保存する準備をします
 var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]
             .createInstance(Components.interfaces.nsIWebBrowserPersist);
 
 persist.persistFlags = Components.interfaces.nsIWebBrowserPersist.PERSIST_FLAGS_REPLACE_EXISTING_FILES;
 persist.persistFlags |= Components.interfaces.nsIWebBrowserPersist.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION;

 // ダウンロードダイアログを表示します (表示しないようにするためには 3 行を消してください)
 var xfer = Components.classes["@mozilla.org/transfer;1"]
            .createInstance(Components.interfaces.nsITransfer);
 xfer.init(source, target, "", null, null, null, persist);
 persist.progressListener = xfer;

 // canvas データをファイルに保存します
 persist.saveURI(source, null, null, null, null, file);
}
356名無しさん@おーぷん :2014/07/31(木)09:41:38 ID:UeXABPodf
About MDN - The MDN project | MDN
https://developer.mozilla.org/en-US/docs/MDN/About#Copyrights_and_licenses
>Code samples added on or after August 20, 2010 are in the public domain.
357名無しさん@おーぷん :2014/07/31(木)10:34:18 ID:UeXABPodf
HTML 要素を追加する - XUL | MDN
https://developer.mozilla.org/ja/docs/XUL/Tutorial/Adding_HTML_Elements
XUL ファイルで HTML 要素を使用するには、XHTML 名前空間を使用するために宣言を行なわなければなりません。
xmlns:html="http://www.w3.org/1999/xhtml"
358名無しさん@おーぷん :2014/07/31(木)10:38:51 ID:UeXABPodf
XUL要素にはcanvasに相当するものが無く、HTML要素を使う必要がある
んで、HTML要素を使うには、>357 のやつと、 要素の前に html: をつけないといけない。

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window
 xmlns:html="http://www.w3.org/1999/xhtml"
 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
 id="canvaswindow"
 title="Canvas Window"
 windowtype="canvaswindow">

 <html:canvas id="myCanvas" style="background:#fff" width="300" height="300"></html:canvas>

</window>
359名無しさん@おーぷん :2014/07/31(木)10:41:13 ID:UeXABPodf
>357-358を守らなかった場合、
TypeError: canvas.getContext is not a function
が出る。

 w = open(
  "chrome://myaddon/content/canvaswindow.xul", "canvaswindow",
  "chrome,resizable");
 w.onLoad = function() {
  let canvas = w.document.getElementById("myCanvas");
  let ctx = canvas.getContext("2d");
 }
360名無しさん@おーぷん :2014/07/31(木)14:53:03 ID:UeXABPodf
なんか面倒だな

https://developer.mozilla.org/ja/docs/XUL/vbox
align="start" 左上を原点にする
style="overflow:auto" 入りきらないときにスクロールバーを出す

<vbox flex="1" align="start" style="overflow:auto">
<html:canvas id="myCanvas" style="background:#fff"/>
</vbox>
361名無しさん@おーぷん :2014/07/31(木)18:51:41 ID:UeXABPodf
drawWindowではflashの内容(youtubeの動画)は取得できない
362名無しさん@おーぷん :2014/07/31(木)18:59:15 ID:UeXABPodf
クリップボード内にあるBMPは取得できないか
外部ツール使うしかないな

clipboard - Mozilla | MDN
https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/clipboard
363名無しさん@おーぷん :2014/08/13(水)06:52:46 ID:tu5HWA7zT
canvasをXULで動的に作成するには、createElementNSを使う。
Image() が windowのメンバなので、windowが必要なことに注意。
windowを使わないこれでもいい
let img = document.createElementNS("http://www.w3.org/1999/xhtml", "img");

document.createElementNS - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/document.createElementNS

window - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/Window#Properties

let img = new Image();
img.onload = function() {
 let c = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
 c.width = img.width;
 c.height = img.height;
 let ctx = c.getContext("2d");
 ctx.drawImage(img, 0, 0);
 showCanvas(c);
}
img.src = "file:///d:/test.bmp";
364名無しさん@おーぷん :2014/08/13(水)06:53:59 ID:Xqrp566TO
XULとHTMLが混ざってるのが非常に分かりにくいわ
365名無しさん@おーぷん :2014/08/13(水)07:03:34 ID:tu5HWA7zT
おっと、documentがwindow使ってるね
366名無しさん@おーぷん :2014/08/13(水)17:22:55 ID:Xqrp566TO
こんなんものあるのか
ファイル操作

OS.File for the main thread - JavaScript OS.File | MDN
https://developer.mozilla.org/ja/docs/JavaScript_OS.File/OS.File_for_the_main_thread


画像保存のサンプルがあるような気がしてならない

HTMLCanvasElement - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/HTMLCanvasElement
367名無しさん@おーぷん :2014/08/13(水)17:29:41 ID:tu5HWA7zT
bmp画像をcanvas経由でpng画像に変換して保存

SCRAPBLOG : canvas要素によるWebページのスクリーンショット保存機能
http://www.xuldev.org/blog/?p=37
に載ってるやり方で。

let filename = "d:\\test.png";
let img = new Image();
img.onload = function() {
 let c = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
 c.width = img.width;
 c.height = img.height;
 let ctx = c.getContext("2d");
 ctx.drawImage(img, 0, 0);

 let url = c.toDataURL("image/png");

 // string型の data:URL から nsIURI オブジェクトを生成する。
 let IO_SERVICE = Components.classes['@mozilla.org/network/io-service;1'].
             getService(Components.interfaces.nsIIOService);
 url = IO_SERVICE.newURI(url, null, null);

 let wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1'].
  createInstance(Components.interfaces.nsIWebBrowserPersist);
  
 let privacyContext = QueryInterface(Components.interfaces.nsIInterfaceRequestor).
  getInterface(Components.interfaces.nsIWebNavigation).
  QueryInterface(Components.interfaces.nsILoadContext);
 Components.utils.import("resource://gre/modules/FileUtils.jsm");
 let file = FileUtils.File(filename);
 wbp.saveURI(url, null, null, null, null, file, privacyContext);
 //wbp.saveURI(url, null, null, null, null, file, null);
}
img.src = "file:///d:/test.bmp";
368名無しさん@おーぷん :2014/08/13(水)18:04:31 ID:Xqrp566TO
HTMLCanvasElement - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/HTMLCanvasElement

let img = new Image();
img.onload = function() {
 let canvas = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
 canvas.width = img.width;
 canvas.height = img.height;
 let ctx = canvas.getContext("2d");
 ctx.drawImage(img, 0, 0);

 var netutilCallback = function() {
    return function(result) {
     console.log(Components.isSuccessCode(result) ? "ok" : "error");
    };
 }
 var mfasCallback = function(filename) {
    return function(inStream) {
      var file = FileUtils.File(filename);
      var outStream = FileUtils.openFileOutputStream(file);
      Cu.import("resource://gre/modules/NetUtil.jsm");
      NetUtil.asyncCopy(inStream, outStream, netutilCallback());
    }
 }
 canvas.mozFetchAsStream(mfasCallback('d:\\test.png'), 'image/png');
}
img.src = "file:///d:/test.bmp";
369名無しさん@おーぷん :2014/08/15(金)10:09:39 ID:i7jp8vIKS
クリップボードのビットマップを保存できた

Saving image (binary data) from the clipboard - mozilla.dev.tech.xul
http://codeverge.com/mozilla.dev.tech.xul/saving-image-binary-data-from-the-clipbo/1556518
370名無しさん@おーぷん :2014/08/21(木)11:06:11 ID:nF793Qsx7
Labs/JS Modules - MozillaWiki
https://wiki.mozilla.org/Labs/JS_Modules#Sync
Components.utils.import("resource://path/to/Sync.js");
Sync.sleep(1000); // sleep 1000 milliseconds
371名無しさん@おーぷん :2014/08/21(木)11:16:56 ID:nF793Qsx7
これは違うみたいだ

jar:file:///C:/Program%20Files/Mozilla%20Firefox/browser/omni.ja!/chrome/browser/content/browser/preferences/sync.js
372名無しさん@おーぷん :2014/08/21(木)11:21:24 ID:nF793Qsx7
ソースが見つからないから、>370はダメみたいだわ
373名無しさん@おーぷん :2014/09/11(木)13:28:40 ID:pHW7i0Nno
32になって、browser.xulから、
context-sep-stop
が無くなって、
context-sep-navigation
になったみたい
374ugg clog boots :2014/10/11(土)02:48:38 ID:XqYlhLuQa
good articles
ugg clog boots http://clog-boots.com
375gucci belts for men :2014/10/11(土)02:48:40 ID:XqYlhLuQa
thank you for share!
gucci belts for men http://gucci-formen.org
376nike jordan :2014/10/11(土)02:48:41 ID:XqYlhLuQa
good articles
nike jordan http://nike-jordanshoes.org
377jimmy choo sales :2014/10/11(土)04:07:01 ID:lUdW4JBXn
thanks for share!
jimmy choo sales http://jimmychoo-sales.net
378authentic jordan websites :2014/10/11(土)04:07:03 ID:lUdW4JBXn
nice articles
authentic jordan websites http://jordanshoes-website.org
379gucci india :2014/10/11(土)04:07:04 ID:lUdW4JBXn
good articles
gucci india http://gucciindiaonline.org
380michael kors crossbody :2014/10/11(土)05:30:03 ID:K6Mu10FmB
Hop Over To THESE Guys
michael kors crossbody http://michaelkorscrossbody.org
381jimmy choo mens sneakers :2014/10/11(土)05:30:07 ID:K6Mu10FmB
Have A Peek At THIS Site
jimmy choo mens sneakers http://jimmychoosneakerssale.com
382jimmy choo bridal shoes sale :2014/10/11(土)05:30:07 ID:K6Mu10FmB
You can check here
jimmy choo bridal shoes sale http://jimmychoobridal.net
383tenis nike air max :2014/10/11(土)12:26:17 ID:K6Mu10FmB
thank you for share!
tenis nike air max http://tenisnikeairmax.org
384名無しさん@おーぷん :2014/10/11(土)18:55:16 ID:VW44uiJtf
これ消す

http://img.open2ch.net/p/open2ch-1381914280-466.png

let social = doc.getElementsByClassName("social");
if (social) social[0].hidden = true;
385gucci sneakers for men :2014/10/18(土)03:55:47 ID:iFzo6yUk9
Browse THIS Site
gucci sneakers for men http://guccisneakersonline.org
386nike airmax 1 :2014/10/18(土)03:56:02 ID:iFzo6yUk9
You Can Try This Out
nike airmax 1 http://nikeairmax-outlet.net
387airmax shoes :2014/10/18(土)03:56:03 ID:iFzo6yUk9
Investigate THIS Site
airmax shoes http://nikeairmax-outlet.net
388gucci boston bag :2014/10/18(土)03:56:07 ID:iFzo6yUk9
Visit THIS Site
gucci boston bag http://gucci-boston.com
389air max 1 leopard :2014/10/18(土)03:56:16 ID:iFzo6yUk9
Pop Over To THIS Site
air max 1 leopard http://cheapnikeair-max1.com
390jordan high heels :2014/10/18(土)03:56:17 ID:iFzo6yUk9
Try These Out
jordan high heels http://jordanshigh-heelsale.net
391名無しさん@おーぷん :2014/10/24(金)20:38:13 ID:wTY9KeSim
4章:XPCOM活用術 - Firefox拡張機能開発チュートリアル (XHTML)
http://kittttttan.web.fc2.com/xul/extension4.html#%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E4%B8%AD%E3%81%AB%E7%A7%BB%E5%8B%95%E3%81%99%E3%82%8B
392名無しさん@おーぷん :2014/10/25(土)21:44:01 ID:JtuLMx9bT
Firefox33.0

about:configで自分でやらないとダメみたいだ

devtools.editor.autoclosebrackets

これではダメ
Scratchpad.editor.config.autoCloseEnabled = false;

jar:file:///C:/Program%20Files/Mozilla%20Firefox/browser/omni.ja!/modules/devtools/sourceeditor/editor.js
393名無しさん@おーぷん :2014/11/08(土)07:05:43 ID:oSfcXYyv5
value が文字列 "undefined" になってしまう

// -sp-context: browser

let sp = Services.wm.getMostRecentWindow("devtools:scratchpad");
let parent = sp.document.getElementById("sp-help-menu");
let newitem = parent.appendItem("test");
console.log(newitem.value == undefined); // false
console.log(typeof(newitem.value)); // "string"
console.log(newitem.value); // "undefined"

appendItem - XUL | MDN
https://developer.mozilla.org/ja/docs/XUL/Method/appendItem
394名無しさん@おーぷん :2014/11/08(土)07:38:35 ID:oSfcXYyv5
これかな、ソースは。良く分からん

jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/chrome/toolkit/content/global/bindings/menu.xml
view-source:jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/chrome/toolkit/content/global/bindings/menu.xml

   <!-- nsIDOMXULContainerElement interface -->
   <method name="appendItem">
    <parameter name="aLabel"/>
    <parameter name="aValue"/>
    <body>
     return this.insertItemAt(-1, aLabel, aValue);
    </body>
   </method>

   <method name="insertItemAt">
    <parameter name="aIndex"/>
    <parameter name="aLabel"/>
    <parameter name="aValue"/>
    <body>
     const XUL_NS =
      "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

     var menupopup = this.menupopup;
     if (!menupopup) {
      menupopup = this.ownerDocument.createElementNS(XUL_NS, "menupopup");
      this.appendChild(menupopup);
     }

     var menuitem = this.ownerDocument.createElementNS(XUL_NS, "menuitem");
     menuitem.setAttribute("label", aLabel);
     menuitem.setAttribute("value", aValue);

     var before = this.getItemAtIndex(aIndex);
     if (before)
      return menupopup.insertBefore(menuitem, before);
     return menupopup.appendChild(menuitem);
    </body>
   </method>
395名無しさん@おーぷん :2014/11/08(土)07:43:36 ID:oSfcXYyv5
文字列にはならんな

function test(aValue) {
 let newitem = document.createElement("a");
 newitem.setAttribute("value", aValue);
 console.log(newitem.value == undefined); // true
}

test();
396名無しさん@おーぷん :2014/11/08(土)22:07:51 ID:oSfcXYyv5
omni のソースを検索したんだけど、
統一感無さすぎ

fileName
filename
aFilename
setFilename
getFileName
397名無しさん@おーぷん :2014/11/10(月)08:26:12 ID:TgV9XLcIb
デフォルト引数サポートされてた
IE, Opera, Safari はまだ

Default parameters - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Default_parameters

function multiply(a, b = 1) {
 return a*b;
}

multiply(5); // 5
398名無しさん@おーぷん :2014/11/10(月)08:28:30 ID:TgV9XLcIb
Firefox限定

String.prototype.repeat - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/repeat

let s = "abc";
document.title = s.repeat(3); // abcabcabc
399名無しさん@おーぷん :2014/11/10(月)08:53:30 ID:TgV9XLcIb
Chrome36でもサポートされてた

String.prototype.repeat() - JavaScript | MDN
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
400名無しさん@おーぷん :2014/11/12(水)10:02:23 ID:agwCt0yLV
JavaScript OS.File | MDN
https://developer.mozilla.org/ja/docs/JavaScript_OS.File
> XPCOM ベースのファイル操作 (nsIFile、nsIIOService のサブセット、他) を置き換える目的でつくられています。
401名無しさん@おーぷん :2014/11/12(水)10:14:24 ID:agwCt0yLV
Firefox拡張作成メモWiki - ファイルの読み書き
http://www43.atwiki.jp/fxext/pages/45.html
402名無しさん@おーぷん :2014/11/12(水)12:47:08 ID:agwCt0yLV
TextDecoder - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/TextDecoder

TextDecoder() - Web API Interfaces | MDN
https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.TextDecoder

TextDecoder.decode() - Web API Interfaces | MDN
https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.decode
403名無しさん@おーぷん :2014/11/12(水)12:48:55 ID:agwCt0yLV
困ったね

importScripts("resource://gre/modules/osfile.jsm");
Exception: importScripts is not defined
404名無しさん@おーぷん :2014/11/12(水)12:55:56 ID:agwCt0yLV
非同期はこれで読み出せた

OS.File for the main thread - JavaScript OS.File | MDN
https://developer.mozilla.org/ja/docs/JavaScript_OS.File/OS.File_for_the_main_thread

Components.utils.import("resource://gre/modules/osfile.jsm");
let decoder = new TextDecoder();
let promise = OS.File.read("d:\\test.txt");
promise = promise.then(
 function onSuccess(array) {
  console.log(decoder.decode(array));
  //return decoder.decode(array);
 }
);
405名無しさん@おーぷん :2014/11/12(水)13:12:21 ID:agwCt0yLV
web worker よくわかんね

//var myWorker = new Worker("readtext.js");
var myWorker = new Worker("file:///D:/Test/JavaScript/WebWorkers/readtext.js");
406名無しさん@おーぷん :2014/11/12(水)13:13:38 ID:agwCt0yLV
web worker使うってことは、結局同期的に読めないってことか
407名無しさん@おーぷん :2014/11/12(水)13:19:34 ID:agwCt0yLV
読み込めた

Firefox拡張作成メモWiki - ファイルの読み書き
http://www43.atwiki.jp/fxext/pages/45.html

Cu.import("resource://gre/modules/FileUtils.jsm");
Cu.import("resource://gre/modules/NetUtil.jsm");

let file = new FileUtils.File("d:\\test.txt");
if (!file.exists()) throw "ファイルが存在しません - " + file.path;
let fis = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
fis.init(file, -1, 0, 0);
let text = NetUtil.readInputStreamToString(fis, fis.available(), {charset:"UTF-8"});

console.log('テキストファイルを読み込みました。\n' + text);
408名無しさん@おーぷん :2014/11/12(水)13:39:11 ID:agwCt0yLV
promise使ったやり方で短くした(非同期)

Components.utils.import("resource://gre/modules/osfile.jsm");
OS.File.read("d:\\asjis.txt").then(function(a) {
let text = (new TextDecoder("sjis")).decode(a);
console.log(text);
}, function(e) { console.error(e.toString()); });
409名無しさん@おーぷん :2014/11/12(水)13:41:40 ID:agwCt0yLV
console.error のところ、
throw e.toString(); じゃダメなんだな
410名無しさん@おーぷん :2014/11/23(日)20:59:48 ID:SfR
非同期書き込み

My.asyncWriteText = function(filename, text, charset, callback) {
Components.utils.import("resource://gre/modules/osfile.jsm");
if (!charset) charset = "utf-8";
OS.File.writeAtomic(filename, text, {encoding:charset}).then(
function() {if (callback) callback();},
function(e) { console.error('writeAtomic error:' + e); }
);
}
411名無しさん@おーぷん :2015/02/21(土)05:23:12 ID:bw2
Windowsだけど、SetWindowTextでXULウィンドウのタイトルを設定しても、
アドオン側からは取得できないみたい
FirefoxはタイトルをGetWindowTextを使って取得していないっぽい

TextArea要素はWindowハンドル持ってないし・・・
クリップボードはいじりたくない
412名無しさん@おーぷん :2015/02/21(土)22:52:37 ID:bw2
ファイル経由もあるけど、クリップボードが無難かな
413名無しさん@おーぷん :2015/02/22(日)05:05:04 ID:oQ1
nglayout.debug.disable_xul_cache=true でキャッシュ無効化
これやっておかないと、XULファイル書き換えるたびに再起動が必要になる

var o = {};

Object.defineProperty(o, "pref", {
  get : function(){
   return Cc[ "@mozilla.org/preferences-service;1" ].getService(Ci.nsIPrefBranch);
  },
  enumerable : true,
  configurable : true
});

o.pref.setBoolPref("nglayout.debug.disable_xul_cache", true);
console.log(o.pref.getBoolPref("nglayout.debug.disable_xul_cache"));
414名無しさん@おーぷん :2015/02/22(日)05:12:45 ID:oQ1
javascriptは javascript.enabled なのに、
xul_cacheは disable だ
やめて欲しいわ、こういうの
415名無しさん@おーぷん :2015/03/06(金)11:00:13 ID:IAm
CodeMirrorのオブジェクトを取得できた

let w = Services.wm.getMostRecentWindow("devtools:scratchpad");
let editor = w.Scratchpad.editor;

function func2(ctx, name) {
 console.log(ctx.cm);
 console.log(name);
 ctx.cm.indentSelection('add');
 //ctx.cm.indentSelection('subtract');
}

// func1: editor に追加する関数 (editor.func1() のように使う)
// func2: editor.func1() で呼び出される関数
editor.extend({ func1: func2 });
editor.func1('editor.extend test');
416名無しさん@おーぷん :2015/03/06(金)11:20:08 ID:IAm
editorだけだと、editor.js の CM_MAPPING にあるのしか使えなかったけど、
上のを使えば codemirror.js の CodeMirror.prototype にあるメソッドが使えるようになる。
417名無しさん@おーぷん :2015/03/06(金)13:20:00 ID:IAm
let w = Services.wm.getMostRecentWindow("devtools:scratchpad");
let ed = w.Scratchpad.editor;
ed.extend( {
 cmCall: function(ctx, funcname, args) {
  let a = Array.prototype.slice.call(arguments);
  a.shift(); // ctx
  a.shift(); // funcname
  let p = ctx.cm[funcname];
  if (typeof(p) == "function")
   p.apply(ctx.cm, a)
  else
   console.error("cant find function named: " + funcname);
 }
});

ed.cmCall("indentSelection", "add");
418名無しさん@おーぷん :2015/03/06(金)13:35:44 ID:IAm
Scratchpadウィンドウのonloadイベントで

function onload() {
 Scratchpad.addObserver({
  onReady: function(){
   Scratchpad.editor.extend({
    cmCall: function(ctx, funcname, args) {
     let a = Array.prototype.slice.call(arguments);
     a.shift(); // ctx
     a.shift(); // funcname
     let p = ctx.cm[funcname];
     if (typeof(p) == "function")
      p.apply(ctx.cm, a)
     else
      console.error("cant find function named: " + funcname);
    }
   });
  }
 });
}

とやっておけば、
Scratchpad.editor.cmCall("indentSelection", "add");
で呼び出せる
419名無しさん@おーぷん :2015/03/06(金)14:04:33 ID:IAm
CodeMirror: User Manual
http://codemirror.net/doc/manual.html
http://codemirror.net/doc/manual.html#commands
420名無しさん@おーぷん :2015/03/08(日)06:58:59 ID:1cL
これでソース表示できた

view-source:resource://gre/chrome/toolkit/content/global/bindings/listbox.xml
421名無しさん@おーぷん :2015/03/08(日)07:03:35 ID:1cL
ああ、でも、リンクをクリックした場合はダメだった
何も起きない
<a href=view-source:resource://gre/chrome/toolkit/content/global/bindings/listbox.xml>listbox.xml</a>

フルパスで指定すれば表示できる
<a href=view-source:jar:file:///C:/Firefox/omni.ja!/chrome/toolkit/content/global/bindings/listbox.xml>listbox.xml</a>
422名無しさん@おーぷん :2015/03/08(日)08:02:42 ID:1cL
アクティブなウィンドウの取得には、"" を渡せばよい

nsIWindowMediator - XPCOM インタフェースリファレンス | MDN
https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWindowMediator
423名無しさん@おーぷん :2015/03/08(日)11:26:09 ID:1cL
Services.wm.getMostRecentWindow("");
424名無しさん@おーぷん :2015/03/12(木)14:24:36 ID:vkr
pref.getPrefType("devtools.scratchpad.recentFilePaths");
pref.getCharPref("devtools.scratchpad.recentFilePaths");
配列っぽかったけど、文字列だ
どうやって取り出すか考えたけど、JSON形式だったわ

let j = JSON.parse(s);
console.log(j);

nsIPrefBranch - XPCOM インタフェースリファレンス | MDN
https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIPrefBranch#getPrefType()
425名無しさん@おーぷん :2015/03/14(土)14:19:20 ID:lVo
Video DownloadHelper 5.0.1 来たね
426名無しさん@おーぷん :2015/03/14(土)16:11:02 ID:nPQ
ESRを使ってるから今のところは関係無いけどVideo DownloadHelper捨てちゃった

今後はDownload Flash and Video (about:addonsでは何故かFlash and Video Downloadと表示される)と
DownThemAll の連携でいこうと思う
暇な時に Ant Video Downloader ってのも試す予定
427名無しさん@おーぷん :2015/03/14(土)17:11:22 ID:6f0
おれは去年からFlashGotだな

DownloadHelper      5,543,617 ユーザ
Flash Video Downloader 1,230,044 ユーザ
FlashGot          1,082,256 ユーザ
430名無しさん@おーぷん :2015/03/15(日)10:47:30 ID:P8w
>>427
FlashGotもいいね
昨日試してみた
というか、結局、俺はもともとVideo DownloadHelperを使いこなせてなくて何でもいいのだと思う

現在の俺的候補
FlashGot
Download Flash and Video + DownThemAll
Ant Video Downloader
431名無しさん@おーぷん :2015/03/15(日)14:47:31 ID:SaE
FlashGotは出てきたアイコンの上で右クリックすると使いやすいんだけど
左クリックすると煩雑という罠があるw 特にYoutube
432名無しさん@おーぷん :2015/03/16(月)14:28:47 ID:806
RedirectorってRedirect Cleaner的な使い方はできないのかな?
Clean Linksで出来そうだから入れてみた
433名無しさん@おーぷん :2015/03/16(月)14:35:47 ID:806
Clean Links難しすぎた。。

こういうリンクを
http://fullrss.net/r/http/www.sanwa.co.jp/
   ↓
http://www.sanwa.co.jp/
こういう風に書き換える方法、誰か教えてくれさい
434名無しさん@おーぷん :2015/03/16(月)14:39:28 ID:806
Bookmark Deduplicator復活キタ━━━━(゚∀゚)━━━━!!
435名無しさん@おーぷん :2015/03/16(月)19:43:50 ID:RHa
let s = "http://fullrss.net/r/http/www.sanwa.co.jp/";
document.title = s.replace("fullrss.net/r/http/", "");
436名無しさん@おーぷん :2015/03/16(月)20:00:42 ID:UwY
Easy DragToGo+ 1.1.7 BETA18は普通に誰でもダウンロードできるようにならないのかなぁ
437名無しさん@おーぷん :2015/03/17(火)14:26:47 ID:mEB
netのスレで知ったけど、Media Sniffer てのも悪くないな
DLHを使いこなせてなかった俺には本当に何でもいいんだと改めて痛感した
438名無しさん@おーぷん :2015/03/17(火)15:16:39 ID:H44
ここって、拡張を作る人のスレじゃなくて、
拡張を使う人のスレなの?
439名無しさん@おーぷん :2015/03/18(水)13:29:16 ID:ldN
さあ・・・
過疎ってるし使ってもいいんじゃない?
440名無しさん@おーぷん :2015/03/19(木)02:03:56 ID:kot
Video DownloadHelper 5.0.1になってからようつべで使い物にならなくなってるな
なんだよConverter入れろって
441名無しさん@おーぷん :2015/03/19(木)09:34:07 ID:AIB
Adblockでもublockでもいいが、広告の受信自体を遮断しているはずなのに
スタートページのサムネイルでは広告つきになっているのね

すると実際は受信しているのか
442名無しさん@おーぷん :2015/03/19(木)10:13:57 ID:KKc
スタートページってのはよくわからないけど
受信はしてるでしょ、実行はしてないけど。
443名無しさん@おーぷん :2015/03/20(金)00:12:27 ID:QCx
スタートページ使ってないが、HttpFoxあたりで通信内容チェックしてみたら?
あとAdblock Plusは「控えめな広告を許可」のチェックを外しておかないと、Adblock Plusと契約してる(?)広告が表示される
444名無しさん@おーぷん :2015/03/20(金)00:15:14 ID:Ojx
スレタイのお兄ちゃんってどういう流れで付いたんだろw
445名無しさん@おーぷん :2015/03/20(金)11:02:10 ID:MA8
どこかに2ch.netと区別する為とか書いてあったが、何故に【お兄ちゃん】なのかは分からん
446名無しさん@おーぷん :2015/03/20(金)13:44:22 ID:sxF
【お】-ぷん【にちゃん】だからじゃない?
最初の書込みが終了しないのは専ブラのせいかなっと
447名無しさん@おーぷん :2015/03/20(金)14:42:39 ID:MA8
>>446
なるほど
思ってたより深い意味があったのは理解できたが、それでも【お兄ちゃん】で噴かずにはいられないwww
448名無しさん@おーぷん :2015/03/20(金)17:28:50 ID:0W3
違う【お兄ちゃん】が由来だと思ってたよ!
449名無しさん@おーぷん :2015/03/20(金)19:15:33 ID:M4E
あーー 妹が欲しいーーー
450名無しさん@おーぷん :2015/03/26(木)19:58:13 ID:1Ky
ublockのバージョンアップがすさまじい
451名無しさん@おーぷん :2015/03/27(金)10:19:33 ID:bUj
旧chのアドブロックスレでもたまに話に出てくるやつか
なんか良さそうだし気が向いたら試してみよう
452名無しさん@おーぷん :2015/03/28(土)09:53:46 ID:T0L
amazonのスクリプト地獄を回避するには、images-amazon.comからのスクリプトを
ブロックすればいいと聞いたが、そうすると定期お届け便がデフォルトになっている商品を
購入できなくなるな。
453名無しさん@おーぷん :2015/03/28(土)10:04:15 ID:siW
amazon、糞重いよね
FireGestures(マウスジェスチャ)の軌跡描画が遅れるくらいに重い
454名無しさん@おーぷん :2015/03/28(土)10:32:52 ID:T0L
定期おトク便だった

とにかく重い。
amazonを利用するにはcorei7でも導入せよってことか。
455名無しさん@おーぷん :2015/03/28(土)10:44:35 ID:9qv
試しにamazonトップページから入って色々みてみたけど
特別重いとは感じないなぁ
Core i3
456名無しさん@おーぷん :2015/03/28(土)12:59:02 ID:Ev4
たしかにいつも重いわけじゃないかも
ページによっても違うのかな
457名無しさん@おーぷん :2015/03/28(土)16:24:36 ID:tAU
amazon商品ページ、何タブくらい開くと重くなる?
458名無しさん@おーぷん :2015/03/29(日)09:37:58 ID:3xy
3タブぐらいでカクカクし出す
グリモンのアフィキラー無効にするとだいぶましになる
個別商品ページじゃなくて商品を検索して一覧が出てるページが重い感じ
459名無しさん@おーぷん :2015/03/30(月)00:24:02 ID:YtM
ちなみにメモリの容量とCPUの型番は何?
460名無しさん@おーぷん :2015/03/30(月)00:28:28 ID:YtM
リソースモニタのメモリのところ見てると
「使用中」と「空き」に加えて「スタンバイ」ってのがあって
調べてみると、この「スタンバイ」が不足すると遅くなるらしい
(どのくらい遅くなるかまでは分からなかったけど、、)
461名無しさん@おーぷん :2015/03/30(月)00:28:57 ID:YtM
キャッシュに使われるようだから
RAM DISK的なものだろうか

メモリ4GBだとFirefox使ってる時いつも不足してるから
8GBに増やしたら速くなるかも、、、と期待中
462名無しさん@おーぷん :2015/03/30(月)05:03:24 ID:dSn
3タブ開いたけど、消費メモリは275MB
カクカクするね
CPU使用率が、3%→70% を行ったり来たりしてる

Amazon.co.jp: 液晶: パソコン・周辺機器ストア
http://www.amazon.co.jp/s/?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&url=search-alias%3Dcomputers&field-keywords=%E6%B6%B2%E6%99%B6

Amazon.co.jp: ゲーム: パソコン・周辺機器ストア
http://www.amazon.co.jp/s/?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&url=search-alias%3Dcomputers&field-keywords=%E3%82%B2%E3%83%BC%E3%83%A0

Amazon.co.jp: パソコン: パソコン・周辺機器ストア
http://www.amazon.co.jp/s/?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&url=search-alias%3Dcomputers&field-keywords=%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3
463名無しさん@おーぷん :2015/03/30(月)05:05:18 ID:dSn
グラフの右の方の
変なの

464名無しさん@おーぷん :2015/03/30(月)05:22:47 ID:dSn
JavaScriptを切っても、0%→25% を行ったり来たり
465名無しさん@おーぷん :2015/03/30(月)07:50:44 ID:IL5
>>459
16GBでFX8300
>>462の3タブ開くとCPU使用率(firefox)が2~7%あたりをいったりきたりする
で、スクロールがカクカクしだす。スクロール以外の挙動は問題ないんだけども
466名無しさん@おーぷん :2015/03/30(月)10:12:08 ID:YtM
メモリ16GBでもカクつくのか。。
467名無しさん@おーぷん :2015/03/30(月)10:26:28 ID:YtM
>>454-455なども合わせて考えると
amazonの為にはintelの高クロックCPUが必須なのかな
468名無しさん@おーぷん :2015/03/30(月)10:31:27 ID:YtM
いつからかMulti Linksが重いからSnap Links Plusに変えたら軽くなった
469名無しさん@おーぷん :2015/03/30(月)10:36:14 ID:YtM
2015年2月にFirefoxがマルチコア対応になるという話は無くなったのかな
470名無しさん@おーぷん :2015/03/31(火)05:57:15 ID:0E1
モジュール(jsm)に、if分の中に関数定義があると、
読み込みに失敗するみたい。
エラーは出ません。

function f(doc) {
 if (doc) {
  function ff() {
   console.log("ok");
  }
  ff();
 }
}
471名無しさん@おーぷん :2015/03/31(火)05:59:08 ID:0E1
function - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/function

if...else - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/if...else
472名無しさん@おーぷん :2015/03/31(火)06:00:49 ID:0E1
こっちなら問題なかった

function f(doc) {
 if (doc) {
  let ff = function() {
  //function ff() {
   console.log("ok");
  }
  ff();
 }
}
473名無しさん@おーぷん :2015/03/31(火)12:32:26 ID:Usy
えっと、、
何の話だろう汗
474名無しさん@おーぷん :2015/03/31(火)13:49:12 ID:EUQ
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-block-level-function-declarations-web-legacy-compatibility-semantics
のあたり.
475名無しさん@おーぷん :2015/03/31(火)17:09:07 ID:0E1
>The above rules are only applied when parsing code that is not strict mode code.

"use strict";
はずしたらうまくいきました。


>a warning should be produced for each function

警告も出てました
SyntaxError: in strict mode code, functions may be declared only at top level or immediately within another function
476名無しさん@おーぷん :2015/03/31(火)17:16:33 ID:0E1
関数と関数スコープ - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope
>関数は //function 文// (ECMA-262 Edition 3 標準の許可された拡張) か
>Function コンストラクタを使って条件付きで定義することができます。
>function 文は ES5 の strict モードで許可されないといったことに注意してください。
>加えて、この機能はブラウザ間で一貫して動作していませんので頼るべきではありません。


>注: SpiderMonkey 以外の JavaScript エンジンの中には、
>名前の付いた関数式を全て関数宣言と間違ってみなすものがあります。
>これによって常に偽となる if 条件式の中にあっても zero が定義されてしまいます。
>条件付きで関数を定義する時には、無名で関数を定義してそれを変数に代入するのがより安全です。

if (0) {
  var zero = function() {
   document.writeln("This is zero.");
  }
}
477名無しさん@おーぷん :2015/03/31(火)21:24:22 ID:0E1
開発関連はプログラム板に新スレ立てました

Firefox Mozillaでプログラミング(XUL)
http://toro.open2ch.net/test/read.cgi/tech/1427803751/l50

2chでも開発については語られてないですし

Mozilla Firefox 拡張機能スレッド Part89©2ch.net
http://anago.2ch.net/test/read.cgi/software/1426084445/l50
478名無しさん@おーぷん :2015/04/01(水)03:38:15 ID:QYC
いやここで開発してくださいスミマセン
後から来たこちらが新スレ立てるのが筋と思います
479名無しさん@おーぷん :2015/04/01(水)03:47:09 ID:QYC
新スレ立てましたm(_ _)m

Mozilla Firefox 拡張機能スレッド【お子ちゃま】
http://anago.open2ch.net/test/read.cgi/software/1427827522/
480名無しさん@おーぷん :2015/04/01(水)18:03:14 ID:mW7
いや、大量に書くので引っ越しますわ
ここでやったら荒らしになっちゃう
481名無しさん@おーぷん :2015/04/01(水)20:02:27 ID:QYC
そうですか
なんかありがとうございます
アリガタビーム!!(ノ・_・)‥‥…━━━━━
482名無しさん@おーぷん :2015/04/06(月)20:26:51 ID:LzR
ublockが怪しくなってきた
寄附募集→集まらないのでマルウェア企業に売却のいつものパターンか
483名無しさん@おーぷん :2015/04/07(火)10:10:29 ID:TAB
wips.com的な会社に買われる最悪の流れが来るのか

昔、IEViewが知らないうちに売却されてマルウェア仕込まれたもんだから仕方無くプロファイルを作り直して
ついでに利用するアドオンを全て見直して新たな環境を構築した事があるけど辛かったわ・・・
484名無しさん@おーぷん :2015/04/07(火)19:23:55 ID:Pgo
お前らYouTubeからダウンロードする時なに使ってる?
Converterがどうこう出てきて単独ではVideo DownloadHelperが使えない子になってる
485名無しさん@おーぷん :2015/04/07(火)21:50:24 ID:pJZ
YouTube Center や Download YouTube Videos as MP4 のスクリプトから DownThemAll! に渡してる
486名無しさん@おーぷん :2015/04/08(水)06:35:03 ID:eii
>>485
情報thx
単独でいけるのはYouTube Centerってやつか
ちょっと調べてみる
487名無しさん@おーぷん :2015/04/10(金)23:10:33 ID:M9M
Markdownを扱える拡張ってかなり少ないのね
メモ系の拡張に取り込んでくれれば便利そうだが
488名無しさん@おーぷん :2015/04/11(土)09:06:45 ID:9J7
ublockが分裂
更に怪しくなってきた
489名無しさん@おーぷん :2015/04/11(土)12:33:49 ID:JWC
タブをファビコンだけにしてサイドバーに並べる「Favicon Tabs」発想がいいなー
だがうまく表示されなかった><
あとツリー機能がほしい
490名無しさん@おーぷん :2015/04/11(土)12:40:17 ID:JWC
そこでツリー型タブの幅を狭めてみた
まあまあかな 見た目が微妙だけど
http://upup.bz/j/my07680MNrYt6zxs53PZf5I.bmp
491名無しさん@おーぷん :2015/04/14(火)11:05:46 ID:1Ov
>>482
AdBlockEdeの方は6月で終了だそうで・・・
Plusに戻るのもいいけど、何か他に良さそうなものは無いだろうか
492名無しさん@おーぷん :2015/04/14(火)11:19:58 ID:Sf3
>>491
adblock#の更新がなくなり、今度はadblock edgeが終了するのか…
オレはadblock#の更新が止まってABPに移行したわ
非表示フィルタをCSSに移して、フィルタを厳選すればそんなに重くないしね
493名無しさん@おーぷん :2015/04/14(火)11:20:13 ID:Q10
タブ移動のショートカットキーってどれに割り当てるのがいいんだろ?
Livedoor Readerに倣ってaとsに割り当てて慣れてしまったけど
operaはzとxでタブ移動するらしい
494名無しさん@おーぷん :2015/04/14(火)11:28:12 ID:Q10
アドオンの更新終了といえば
リダレクト除去系と検索パラメーター編集系のアドオンが
不自然に無くなっていく・・・
495名無しさん@おーぷん :2015/04/14(火)15:02:12 ID:Gcu
>>493
俺はZ,Xにしてるなあ
Cをブックマーク表示、Vを全画面化。
496名無しさん@おーぷん :2015/04/14(火)16:32:22 ID:63c
>>491
AdBlockEde終了するのか
μBlockも怪しくなったら何も残らないじゃないか
どうすりゃいいんだ
497名無しさん@おーぷん :2015/04/14(火)16:44:25 ID:z4m
>>496
サポートサイトの方を見てないから詳しいことは分からないけど、mozillaアドオンサイトの方に

**This addon will be discontinued on June 2015**

と書いてあったから間違い無いんじゃないかな
マルウェアを仕込んだりしない良心的な人が引き継いでくれると嬉しいんだけど

https://addons.mozilla.org/ja/firefox/addon/adblock-edge/
498名無しさん@おーぷん :2015/04/14(火)17:04:13 ID:fWh
>>496
脱字をそのままコピっちゃダメよ
499名無しさん@おーぷん :2015/04/14(火)17:07:14 ID:z4m
うを
ID変わっちゃったけどその脱字の元は俺じゃないか
何かすいませんでした
500名無しさん@おーぷん :2015/04/14(火)18:51:20 ID:4rl
ublockの一方は過去を切り捨てにかかってるし
他方は寄附を募集中
いちおうまだGPLのままらしいが
501名無しさん@おーぷん :2015/04/14(火)21:39:43 ID:4DC
>>495
㌧!
keyconfigでzとxに変えてみたら、検索窓にフォーカスされてもタブ移動できるようになった。。めっちゃ楽や
ブックマークもctrl+Bからcに変えてめっちゃ楽になった
502名無しさん@おーぷん :2015/04/15(水)20:13:03 ID:5KR
ublockの元の作者版はublock0と改名したらしい
Chrome拡張の方はなにかGoogleと諍いがあったとか何とか
503名無しさん@おーぷん :2015/04/22(水)08:55:08 ID:dk0
Firefox がPocketとかいう外部サービスと提携し、その機能を本体に取り込むらしい
事実上ユーザデータの売却かしら
504名無しさん@おーぷん :2015/04/23(木)21:51:21 ID:lWp
a/sがz/xになるだけで肩こりが激減した
キーが一列手前になるだけでこれほど体が楽になるとは。。
正確にはz/xは戻る/進むで、タブ移動は1/2だったから右手に変わったのもあるけど
505名無しさん@おーぷん :2015/04/23(木)22:49:50 ID:Ecz
>>504
それならタブ移動はc/vにすりゃよくない?
506名無しさん@おーぷん :2015/04/24(金)13:25:07 ID:cGE
戻す/進むは殆ど使わないんだ
書き方が悪かったかな
z/xスタイル(operaスタイル)の1/2が楽ちんなんだ~
507名無しさん@おーぷん :2015/04/25(土)11:10:29 ID:Uvx
テキストリンクが機能してないことに今頃気づいた
nightlyをインストールして解決
ttp://piro.sakura.ne.jp/xul/xpi/nightly/
508名無しさん@おーぷん :2015/04/25(土)11:18:09 ID:6pJ
>>507
GJ!
509名無しさん@おーぷん :2015/04/25(土)15:24:56 ID:oPO
やっぱりラピッドリリースは諸悪の根源だな
510名無しさん@おーぷん :2015/04/25(土)15:33:10 ID:GyC
最近FirefoxでGoogle日本語入力が使えないっていう人が多いけど、なんでだろ
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14144771804
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14144679744
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13144535308
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12144693932
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12144546782
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11144261871
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12144253027
511名無しさん@おーぷん :2015/04/25(土)15:53:45 ID:f85
Windows7でGoogleIME使ってるけど、日本語使えなくなるようなことにはなってないな
動画ダウンロードアプリとかの怪しいソフトをインストールしてて、
一緒に勝手に入った拡張が悪さしてるんじゃないのかと予想
512名無しさん@おーぷん :2015/04/25(土)18:54:38 ID:T2d
ESR使えば
513名無しさん@おーぷん :2015/04/25(土)19:51:44 ID:dHf
全部同じ奴だな
514名無しさん@おーぷん :2015/04/25(土)21:01:14 ID:T2d
ブックマークにフォルダ掘って10個ぐらいブックマークを入れてあるんだけど
そのフォルダを右クリして「すべてタブで開く」を実行した時に2~3秒のウェイトを入れながら開くようにするアドオンってない?
ニコ動みたいに短時間の連続アクセスを弾くサイトだとエラー画面が出ちゃうからさ
515名無しさん@おーぷん :2015/04/28(火)09:48:33 ID:tx4
アクティブにするまで読み込まなくするのならあるyo
「Load Tab on select」
516名無しさん@おーぷん :2015/05/13(水)18:28:55 ID:jl5
Firefox38.0でRequestPolicy使えなくなったから
やけになってbetaの64bit版インストールしたら
なぜかRequestPolicy使えるようになったでござる

38.0b5→win64→ja
https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/
517名無しさん@おーぷん :2015/05/15(金)13:48:31 ID:v5D
Microsoft Edgeは、FirefoxやChromeのアドオン/プラグインがそのまま使えるんだって
518名無しさん@おーぷん :2015/05/17(日)12:05:41 ID:xvs
uBlock OriginとuMatrixを入れてるんだけど
他方がブロックしたものがそれぞれのログに反映されてないのってうちだけ?
519名無しさん@おーぷん :2015/05/17(日)12:31:19 ID:087
それは問題ないんじゃない?

うちはRequestPolicyとAdblock Plusだけど
リクポリで許可されたファイルだけABPが処理してる
520名無しさん@おーぷん :2015/05/17(日)15:32:28 ID:G43
そうそう、リクポリとかABPとかNoScriptとかって順番に動作してるなって目に見えてわかるんだけど
この2つの組み合わせって並列に動作してるように見えててオマ環なのか気になってるんだ

Firefoxのネットワークモニタを見る限りではブロックしてるから問題ないと思うんだけど
521名無しさん@おーぷん :2015/05/22(金)11:48:41 ID:Rbg
uMatrixおもろ~

40.0a2のmulti-processでリクポリとABPが使えないのを機に、uBlock OriginとuMatrix入れてみた
40.0a2だとuBlock OriginとuMatrixのログは両方に載ってるな
http://upup.bz/j/my20101XYsYt6zxs53PZf5I.png
http://upup.bz/j/my20102npYYt6zxs53PZf5I.png
522名無しさん@おーぷん :2015/05/23(土)19:34:43 ID:cjs
RedirectCreanerが復活してる
https://addons.mozilla.org/ja/firefox/addon/redirectcleaner/
523名無しさん@おーぷん :2015/05/23(土)19:36:22 ID:p45
>>522
うぉおおGJ!
524名無しさん@おーぷん :2015/05/23(土)19:55:33 ID:p45
試してみたけど俺の環境じゃだめだ・・・
サイトによって実用に耐えないくらいめちゃくちゃ重くなる症状が相変わらずだ
残念orz
525名無しさん@おーぷん :2015/05/23(土)20:10:07 ID:WGo
コンテンツ弄り系は遅くなるな
526名無しさん@おーぷん :2015/05/23(土)21:44:04 ID:p45
公式アドオンページが消える直前のアップデートまでは
動いていることを意識できないくらい大人しいアドオンだったんだけどなぁ
消える直前のアップデートでいきなり重くなって絶対不具合抱えてるだろこれって思ってたら
どうも仕様っぽいって流れからの気づいたらアドオンページ消滅だったな
なにがあったんだ
527名無しさん@おーぷん :2015/05/23(土)22:16:18 ID:E1C
>>522
https://github.com/RedirectCleaner/RedirectCleaner
This is a fork of Redirect cleaner orginally developed by Alexander Bergmann myaddons@gmx.de

だそうよ
開発者の素性見えないから様子見してからのほうがいいかもしれんね
528名無しさん@おーぷん :2015/05/24(日)22:16:34 ID:vIc
そうなんだ(・_・;)
とりあえず削除してみよう
529名無しさん@おーぷん :2015/05/29(金)21:55:15 ID:mia
署名来たけど一回引っこめた経緯あるしアドオンの更新するのコエーよ
みんな更新してるの?
530名無しさん@おーぷん :2015/05/30(土)05:52:21 ID:MYY
前回はFirefox側にバグがあって引っ込めてただけで、今回はバグ潰してるから大丈夫かと
signedへ更新しないとAMO経由でアプデできなくなる予定だしね
531名無しさん@おーぷん :2015/05/30(土)12:35:50 ID:VKT
全部更新したった
Media Snifferだけ更新がエンドレスだけどそのうち止るだろう
532名無しさん@おーぷん :2015/05/30(土)22:15:30 ID:gd3
>>531
やっぱりか
うちでもMedia Snifferだけ更新がエンドレス状態
533名無しさん@おーぷん :2015/05/31(日)07:33:30 ID:Azl
uMatrixがrcで日本語になったけど見づらいなあ
534名無しさん@おーぷん :2015/05/31(日)12:32:15 ID:eWQ
uMatrixって日本語ドメインで効かないね
まぁ重要なサイトは日本語ドメインなんて使わないだろうし
まぁなんとかなるけど。。
535名無しさん@おーぷん :2015/05/31(日)16:16:20 ID:bCC
日本語.jpってとこで少し試したけど普通に動いてると思うんだが
uMatrix 0.9.1.2
536名無しさん@おーぷん :2015/06/01(月)00:31:54 ID:m4v
えっ、そうなんだ
こっちだと0.9.1.2に上げても効かないみたい(´Д⊂ヽ
http://upup.bz/j/my22710RtEYt6zxs53PZf5I.png
けど貴重な情報サンクス!

試しに、他のアドオン全部 無効化してみたけど、そう簡単には直らなかった(;`・_・´)ムム-…
537名無しさん@おーぷん :2015/06/01(月)00:35:29 ID:m4v
ちなみに環境は
win7 64bit
Firefox beta 39(64bit)

betaじゃなくて正式版だと効くのかも。。(^_^;)
538名無しさん@おーぷん :2015/06/01(月)01:14:33 ID:4Kv
画像を赤くすればイチロー消えるし問題ないなあ

スクショ見る限りだとURLバーの表示が気になった
こっちだとちゃんとユンケル.jpって表示されてて下線がない

pcxFirefox 38.0.5
539名無しさん@おーぷん :2015/06/01(月)11:39:58 ID:fHr
お~い VideoDownioadHelper ちっとおかしくねえか ?
720Pが出てこなくなっちゃったよ
解る賢者は教えてくれー。
540名無しさん@おーぷん :2015/06/01(月)11:47:05 ID:fHr
環境忘れた。
Firefox 38.0 Linux VideoDownioadHelper5.3.1.1-signed
541名無しさん@おーぷん :2015/06/01(月)13:23:52 ID:4OW
㌧!
Locationbar²無効化して標準に戻してみたけど、やっぱり多くの画像が表示されなかった
けど、まぁ、ちゃんと動作してる人がいるんだから何かの拍子に直るだろう(/・ω・)/
542539 :2015/06/01(月)13:30:33 ID:fHr
う~ん ADPしか出てこないなぁ・・・
543名無しさん@おーぷん :2015/06/03(水)01:03:03 ID:7pT
使用不能になっていたRequestPolicyがいつのまにか復活してるじゃないか
よかったよかった
544名無しさん@おーぷん :2015/06/03(水)01:14:14 ID:ccs
>>543
>>527
AMOのページには誰のか分からないbitcoinの寄付先が書いてあったりして
怪しすぎるから様子見したほうがいいんじゃないかと
545543 :2015/06/03(水)02:39:17 ID:pFh
>>544
RequestPolicyのページを検索してみたけど、Bitcoinについては何も書かれていないみたいだ
543のRequestPolicyをRedirectCleanerと見間違えたのかな?
546名無しさん@おーぷん :2015/06/03(水)03:29:10 ID:ccs
>>545
すまない間違えていたようだ
RequestPolicyは大丈夫そうだ
547名無しさん@おーぷん :2015/06/03(水)14:42:28 ID:iZs
2chもそうですが、掲示板の書き込みのテキストボックスが小さい時、右下を掴んで広げますよね
毎回毎回それをやるのが面倒になってきたんですが、これをどうにかするアドオンや方法があればアドバイスください

テキストボックスのサイズを変更した時はサイズを記憶して、次に開いた時は最初からそのサイズにしてくれるアドオンとかないですかね
548名無しさん@おーぷん :2015/06/05(金)00:25:11 ID:csY
YouTube Flash Video PlayerでFlashに切り替えられなくなった
仕方ないのでHTML5に変更
しかし、そもそもなんでFlashにしてたんだったかな(・・?
549名無しさん@おーぷん :2015/06/05(金)09:50:29 ID:Ob8
>>547
ドンピシャなアドオンがなかったらCSS書けばいいんじゃないかな
550名無しさん@おーぷん :2015/06/11(木)12:32:57 ID:xcf
youtubeのmp4とwebmの画質を比べたら、mp4の方が綺麗だった
比べたのはひとつの動画だけだけどね
ファイルサイズが大きいのはwebmだった
551名無しさん@おーぷん :2015/06/16(火)12:25:05 ID:TG1
LeechBlockの使い方がなかなか難しい
再び、毎時ラスト10分が休憩の設定に戻った

休憩を大きく取ろうとするけど
そうするとタイムリミットみたいになって、あせっちゃうから
552名無しさん@おーぷん :2015/06/19(金)14:03:01 ID:Mpa
元Google社員が「全ての広告削除ツールを無効にする」技術を開発中
http://gigazine.net/news/20150619-former-google-adblock-stop/

マルウェア的手法を使わずにこんな事ができるのかしら
553名無しさん@おーぷん :2015/06/19(金)15:34:18 ID:8pI
アドウェア的なものをChromeやAndroidに組み込んで強制表示させれば可能だろうな
WebAssemblyにねじ込んでくるかもしれんね
554名無しさん@おーぷん :2015/06/19(金)19:14:15 ID:kUc
adblockユーザーには、似て非なるページ(気付きにくい嘘情報)を表示する方が効果がある
555名無しさん@おーぷん :2015/06/20(土)18:10:33 ID:el2
adblockにしろpocketにしろclearyにしろ、記事を読みたいっていう欲求だから

問題は、記事の上とか左上に広告を置くと儲かる、っていう事なんじゃないかと思う
人間は左上から読み進めるから

だから上とか左上に広告があったら検索順位を落とす
仕組みにしたらいんじゃないかなぁ
556名無しさん@おーぷん :2015/06/27(土)18:44:39 ID:ceT
YouTube Control Centerけっこういい
youtube上以外から再生/停止できるんだな
chromeのstreamusはもっとスゴイらしい
557名無しさん@おーぷん :2015/06/29(月)20:16:32 ID:1qg
知らぬ間に謎のアドオンがインストールされてた

ADB Helper
valence

なぜ勝手に。。
開発者向けのアドオンらしいから無効化したよっとφ(..)メモメモ
558名無しさん@おーぷん :2015/06/29(月)21:27:35 ID:xqC
「MozillaがFirefoxの閲覧履歴を参照する広告事業を展開、プライバシー保護の牙城崩れるか?」
http://jp.techcrunch.com/2015/05/22/20150521mozilla-will-soon-launch-sponsored-suggested-tiles-based-on-your-browsing-history/
559名無しさん@おーぷん :2015/06/29(月)22:33:23 ID:LSw
しかも閲覧履歴をサーバに送信するらしいで
560名無しさん@おーぷん :2015/06/30(火)06:17:30 ID:2fl
回避法はよ教えて
561名無しさん@おーぷん :2015/06/30(火)08:30:11 ID:LOE
使用統計情報の利用(リリースされていないビルドにおいては「Telementry」とも呼びます)

使用統計情報の利用または「Telemetry」は、ユーザインターフェース機能、メモリおよび
ハードウェアコンフィギュレーションの使用情報、パフォーマンスおよび応答性の統計を
Mozilla に送信するFirefoxの機能です。皆様の IP アドレスも標準ウェブログ(web log)の
一部として収集されます。使用統計情報は SSL を通じて送信され、Firefox の将来の
バージョンを改良するために役立てられます。Mozilla に送信された使用統計情報は、
集積統合され、Mozilla の従業員および一般の貢献者を含む幅広い開発者に公開されます。
Telemetry が有効化されている場合、短期的な試みとして、ウェブサイト閲覧履歴に関する
情報が収集される場合があります。

本機能は、FirefoxのNightly、Developer Edition、Aurora および Beta ビルドにおいては、
ユーザが Mozilla にフィードバックを提供するため、初期設定で有効化されています。
Firefoxの通常リリース版においては、本機能は初期設定で無効化されています。
562名無しさん@おーぷん :2015/07/05(日)14:21:31 ID:hWj
betaの初期設定で有効化されている。。。

オプションのヘルスレポートなら無効化してるけど、それとは別なのかな?
563名無しさん@おーぷん :2015/07/05(日)21:55:32 ID:8JI
まあ今でもダウンロードしたファイルは一々Googleにご注進する仕様になっているが、
閲覧履歴全体となるとなぁ
564名無しさん@おーぷん :2015/07/06(月)07:51:30 ID:CKV
about:config見た感じだと
incoming.telemetry.mozilla.orgとtelemetry-experiment.cdn.mozilla.netへの
アクセスをフィアウォールかなんかで止めるのが一番確実っぽい
565名無しさん@おーぷん :2015/07/06(月)18:15:52 ID:COn
疑惑のSuggested Tilesは結局39で入ってるのか40なのか
566名無しさん@おーぷん :2015/07/07(火)11:56:17 ID:O6M
署名ってガチらしいね(驚)
絶対に署名がないと、そのアドオンはfirefoxでは使えないんだって
初心者がウイルスに感染しないためと思ってたよ

第一印象としては、オープンソースっぽくないなと思った
ちょっとmozillaが権力持ちすぎな気がするな
まあいっか
567名無しさん@おーぷん :2015/07/08(水)18:48:58 ID:ees
具体的にどんな仕様になるかは審かじゃないが、
広告目的で閲覧履歴漏らさず外部に送信となると、
おなじみの「個人を特定しない」って
エクスキューズがあっても大問題になるはず……

なのに妙に静かだな
外国ならひげ面の仙人みたいなあの人とか
国内なら某ちゅ先生とかが噛みついて騒いでくれそうなのに
568名無しさん@おーぷん :2015/07/11(土)09:06:54 ID:g8K
どの広告を表示するかは各Firefoxで(ローカルで)判断するらしい。
けれどもその広告に対しユーザがどんな応答をしたかは、サーバに送信されるから
結局は閲覧履歴ダダ漏れか。
569名無しさん@おーぷん :2015/07/23(木)17:31:06 ID:K5T
RequestPolicy Continuedなんてのがあるのか
https://requestpolicycontinued.github.io/
570名無しさん@おーぷん :2015/08/25(火)12:20:51 ID:Wsq
LoadTabsProgressively外したら軽くなった
どうも読み込むタブ数が3個以下とかだと逆に重くなるっぽい
そこで20に増やして対応

データが届くのを待つから、処理が減って逆に軽くなるのかな(?_?)
571名無しさん@おーぷん :2015/10/18(日)00:19:55 ID:3S1
アドオンにこだわらずブックマークレットで調整するのも一つの手だよね
画像検索、つべDL、キャッシュ表示、imgurへUP、スレのログ速表示と色々よ
572名無しさん@おーぷん :2015/10/18(日)15:11:54 ID:C8o
アドオンの宣伝ってここでやらせて頂いてよろしいでしょうか?
573名無しさん@おーぷん :2015/10/18(日)20:18:54 ID:h7Q
ひゅーほほほほっ
574名無しさん@おーぷん :2015/11/05(木)12:55:47 ID:CgI
Firefox42.0 きたけど
Ghostery 5.4.8.1 42.0 で動いてないよん
575名無しさん@おーぷん :2015/11/05(木)21:03:46 ID:Rqw
Ghostery 5.4.9 きたよん
576名無しさん@おーぷん :2015/11/12(木)08:10:52 ID:GLx
Menu Wizardが広告追加機能を付けたみたい
http:のページに表示するようで、設定に拒否と許可の項目が追加されてる
デフォルトだと両方チェック入ってないし、そのまま使ってもなにもなかったけど、2.10にダウングレードした
アドオンページのレビューも評価下がりまくり
Download Manager (S3)とか良い拡張機能作ってた人なんで残念
577名無しさん@おーぷん :2015/11/12(木)14:05:57 ID:ugG
作者ウクライナの人で情勢不安で失業して、ついでに子供が糖尿病で金必要らしいからな
そういう人が作ってるアドオンだって知った上で使ってやれ
578名無しさん@おーぷん :2016/01/03(日)04:42:12 ID:UbK
ゲーム&アプリ一覧        
http://ameroad.net/?m=m_new&c=2000
http://ameroad.net/platform.gif
579名無しさん@おーぷん :2016/01/28(木)20:32:16 ID:9Re
Firefox44でCustom Buttons 0.0.5.8.1を入れていると、起動が遅くなります。
自分のところだと、ウィンドウが表示されるまで30秒ほどかかりますね。
最初は起動中にクラッシュしているのかと思いましたが。
addons.mozilla.orgでは報告が上がっているので、早期に対策版が作られることを期待したいです。
580579 :2016/03/06(日)00:50:27 ID:i9S
Custom Buttonsの件ですが、0.0.5.8.6がリリースされて解決したようです。
581名無しさん@おーぷん :2016/04/29(金)10:48:21 ID:t7B
  ∧_∧
 .ミ,,・_・ミ
ヾ(,_uuノ
582名無しさん@おーぷん :2016/07/02(土)04:07:20 ID:PQz
  ∧,,∧
 (`・ω・)シャキーン
.c(,_uuノ
583名無しさん@おーぷん :2016/09/30(金)05:22:37 ID:uU0
            i"\ ))
            | 8  )
           ∧,,,∧∩-''"
      _ ..(´・ω・`)彡  おぱんつ おぱんつ ! !
   〃(\ ∞ ,⊂彡
     `ヽ)_ノ|   | 
          し⌒J   
584名無しさん@おーぷん :2016/10/30(日)00:14:19 ID:rkS
彡⌒ミ 彡⌒ミ
585名無しさん@おーぷん :2016/11/27(日)17:35:16 ID:icQ
誰もいないからFireGestures用のスクリプト貼ってみる
*リンクを新しい背面タブで開く
*選択範囲(無ければクリップボード)のURLをすべて開く
*選択文字列(無ければクリップボード文字列)を新しい背面タブでWeb検索(Googleで検索)

try {
FireGestures._performAction(event, "FireGestures:OpenLinkInBgTab");
}
catch (ex) {
var sel = FireGestures.getSelectedText() || readFromClipboard();
if (!sel)
throw "No selection";
var URLs = [];
sel.split("\n").forEach(function(str) {
str = str.match(/([\w\+\-\=\$;:\?\.%,!#~\*\/@&]{8,})/);
if (!str || str[1].indexOf(".") < 0)
return;
if (str[1].split("/").length < 3 && str[1].split(".").length < 3)
return;
str = str[1];
if (str.indexOf("ttp://") == 0 || str.indexOf("ttps://") == 0)
str = "h" + str;
URLs.push(str);
});
if (URLs.length > 0)
FireGestures.openURLs(URLs);
else
gBrowser.loadOneTab('http://www.google.com/search?q='+sel,null,null,null,true,false);
}
586名無しさん@おーぷん :2016/11/28(月)14:24:42 ID:Suy
あるがとこぜま~す
587名無しさん@おーぷん :2016/12/01(木)21:00:18 ID:92I
誰もいないからFireGestures用のスクリプト貼ってみる
// 選択範囲のリンクをすべて開く
// リンクを新しい前面タブで開く
// 選択文字列(無ければクリップボード文字列)を新しい前面タブでWeb検索(Googleで検索)

try {
var linkURLs = FireGestures.gatherLinkURLsInSelection();
if (!linkURLs || linkURLs.length == 0)
throw "No valid links in selection";
var doc = FireGestures.sourceNode.ownerDocument;
FireGestures.openURLs(linkURLs, makeURI(doc.location.href), doc.charset);
}
catch (ex) {
var srcNode = FireGestures.sourceNode;
var linkURL = FireGestures.getLinkURL(srcNode);
if (linkURL) {
gBrowser.loadOneTab(linkURL, {
inBackground: false,
relatedToCurrent: true});
return;}

var sel = FireGestures.getSelectedText() || readFromClipboard();
if (sel) {
gBrowser.loadOneTab('http://www.google.com/search?q='+sel, {
inBackground: false,
relatedToCurrent: true});
return;}
}
588名無しさん@おーぷん :2016/12/02(金)09:13:07 ID:LW6
あるがとこぜま~す
589名無しさん@おーぷん :2016/12/14(水)21:25:36 ID:FLN
誰もいないからFireGestures用のスクリプト貼ってみる

// リンクを左隣に前面タブで開く
// Web検索バーの文字列をクリア
// 選択範囲のリンクを左側にすべて開く

try {
var linkURL = FireGestures.getLinkURL();
var doc = FireGestures.sourceNode.ownerDocument;
FireGestures.checkURL(linkURL, doc);
var pos = gBrowser.mCurrentTab._tPos;
var tab = gBrowser.loadOneTab(linkURL, {
referrerURI: doc.documentURIObject,
charset: doc.characterSet,
inBackground: false,
relatedToCurrent: true
});
gBrowser.moveTabTo(tab, pos);
}
catch (ex) {
var linkURLs = FireGestures.gatherLinkURLsInSelection();
if (!linkURLs)
throw document.getElementById("searchbar").value = "";
for (var i = 0; i < linkURLs.length; i++) {
var pos = gBrowser.mCurrentTab._tPos;
var tab = gBrowser.loadOneTab(linkURLs[i], {
inBackground: true,
relatedToCurrent: true
});
gBrowser.moveTabTo(tab, pos);
}
}
590名無しさん@おーぷん :2016/12/14(水)21:39:55 ID:D9T
// リンクを左隣に背面タブで開く
// 選択範囲(またはクリップボード)のURLを左側にすべて開く
// 選択(またはクリップボード)文字列を検索して左隣に背面タブで開く(Googleで検索)

try {
var linkURL = FireGestures.getLinkURL();
var doc = FireGestures.sourceNode.ownerDocument;
FireGestures.checkURL(linkURL, doc);
var pos = gBrowser.mCurrentTab._tPos;
var tab = gBrowser.loadOneTab(linkURL, {
referrerURI: doc.documentURIObject,
charset: doc.characterSet,
inBackground: true,
relatedToCurrent: true
});
gBrowser.moveTabTo(tab, pos);
}
catch (ex) {
var sel = FireGestures.getSelectedText() || readFromClipboard();
if (!sel)
throw "No selection";
var URLs = [];
var flag = false;
sel.split("\n").forEach(function(str) {
str = str.match(/([\w\+\-\=\$;:\?\.%,!#~\*\/@&]{8,})/);
if (!str || str[1].indexOf(".") < 0)
return;
if (str[1].split("/").length < 3 && str[1].split(".").length < 3)
return;
str = str[1];
if (str.indexOf("ttp://") == 0 || str.indexOf("ttps://") == 0)
str = "h" + str;
var pos = gBrowser.mCurrentTab._tPos;
var tab = gBrowser.loadOneTab(str, {
inBackground: true,
relatedToCurrent: true
});
gBrowser.moveTabTo(tab, pos);
flag = true;
});
if ( !flag ) {
var pos = gBrowser.mCurrentTab._tPos;
var tab = gBrowser.loadOneTab('https://www.google.com/search?lr=lang_ja&hl=ja&q='+sel, {
inBackground: true,
relatedToCurrent: true
});
gBrowser.moveTabTo(tab, pos);
}
}
591名無しさん@おーぷん :2016/12/15(木)21:05:35 ID:yPG
FireGestures用スクリプト拾い物

// 左隣のタブのみ閉じる
var childNodes = gBrowser.mTabContainer.childNodes;
var currentTab = gBrowser.mTabContainer.selectedIndex;
if ( currentTab > 0 )
gBrowser.removeTab(childNodes[currentTab - 1]);

// 右隣のタブのみ閉じる
var childNodes = gBrowser.mTabContainer.childNodes;
var currentTab = gBrowser.mTabContainer.selectedIndex;
if ( currentTab < childNodes.length - 1 )
gBrowser.removeTab(childNodes[currentTab + 1]);

// タブを閉じて左のタブへフォーカス
var tab = gBrowser.mCurrentTab;
if(tab.previousSibling)
gBrowser.mTabContainer.selectedIndex--;
gBrowser.removeTab(tab);

// タブを閉じて右のタブへフォーカス
var tab = gBrowser.mCurrentTab;
if(tab.nextSibling)
gBrowser.mTabContainer.selectedIndex++;
gBrowser.removeTab(tab);

// タブを閉じて先頭のタブへフォーカス
var tab = gBrowser.mCurrentTab;
if(tab.previousSibling)
getBrowser().mTabContainer.selectedIndex = 0;
gBrowser.removeTab(tab);

// タブを閉じて末尾のタブへフォーカス
var tab = gBrowser.mCurrentTab;
if(tab.previousSibling)
getBrowser().mTabContainer.selectedIndex = 0;
var lastTab = gBrowser.mTabs[gBrowser.mTabs.length - 1];
gBrowser.selectedTab = lastTab;
gBrowser.removeTab(tab);
592名無しさん@おーぷん :2016/12/15(木)21:53:58 ID:yPG
FireGestures用スクリプト拾い物

// SearchWPのハイライトを有効/無効
gSearchWP.Highlighting.toggleHighlight(event); event.stopPropagation();

// Web検索バーの文字列をクリップボードへコピー
var clipb = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper);
clipb.copyString(document.getElementById('searchbar').value);

// 選択(クリップボード)文字列をWeb検索バーに入力
document.getElementById("searchbar").value = content.getSelection().toString() || readFromClipboard();

// 選択(クリップボード)文字列をWeb検索バーに追加して入力
if (content.getSelection() == "") {
document.getElementById("searchbar").value = document.getElementById("searchbar").value + " " + readFromClipboard();
}
else {
document.getElementById("searchbar").value = document.getElementById("searchbar").value + " " + content.getSelection();
}

// 選択(クリップボード)文字列を "" で囲ってWeb検索バーに入力
if (content.getSelection() == "") {
document.getElementById("searchbar").value = '"' + readFromClipboard() + '"';
}
else {
document.getElementById("searchbar").value = '"' + content.getSelection() + '"';
}
593名無しさん@おーぷん :2016/12/15(木)21:55:51 ID:TjR
あるがとこぜま~す
594名無しさん@おーぷん :2016/12/16(金)19:35:55 ID:p3R
誰もいないからFireGestures用のスクリプト貼ってみる
// タブを複製(左隣に背面タブで開く)
var orgTab = gBrowser.mCurrentTab;
var newTab = gBrowser.duplicateTab(orgTab);
gBrowser.moveTabTo(newTab, orgTab._tPos);

// 「ページの情報を表示(サイト別設定)」を開く/閉じる
var win = Cc["@mozilla.org/appshell/window-mediator;1"].
getService(Ci.nsIWindowMediator).
getMostRecentWindow("Browser:page-info");
if (win)
win.close();
else
BrowserPageInfo(null, "permTab");

// 「ページの情報を表示(メディア)」を開く/閉じる
var win = Cc["@mozilla.org/appshell/window-mediator;1"].
getService(Ci.nsIWindowMediator).
getMostRecentWindow("Browser:page-info");
if (win)
win.close();
else
BrowserPageInfo(null, "mediaTab");

// 「Mozilla Firefox について」を開く/閉じる
var win = Cc["@mozilla.org/appshell/window-mediator;1"].
getService(Ci.nsIWindowMediator).
getMostRecentWindow("Browser:About");
if (win)
win.close();
else
openDialog("chrome://browser/content/aboutDialog.xul");
595名無しさん@おーぷん :2016/12/16(金)19:48:43 ID:p3R
// リンクを現在のタブで開く/ページを更新
var linkURL = FireGestures.getLinkURL();
if (!linkURL)
throw FireGestures._performAction(event, "Browser:Reload");
var doc = FireGestures.sourceNode.ownerDocument;
FireGestures.checkURL(linkURL, doc);
var charset = window.content.document.characterSet;
var referer = makeURI(doc.location.href);
gBrowser.loadURI(linkURL, referer, charset);

// 「すべてのブックマークを表示」を開く/閉じる
var win = Cc["@mozilla.org/appshell/window-mediator;1"].
getService(Ci.nsIWindowMediator).
getMostRecentWindow("Places:Organizer");
if (win)
win.close();
else
openDialog("chrome://browser/content/places/places.xul", "centerscreen");

// 「FireGestures-設定」を開く/閉じる
var win = Cc["@mozilla.org/appshell/window-mediator;1"].
getService(Ci.nsIWindowMediator).
getMostRecentWindow("FireGestures:Options");
if (win)
win.close();
else
FireGestures._performAction(event, "FireGestures:Preferences");
596名無しさん@おーぷん :2016/12/16(金)22:46:08 ID:WhV
   , - ,----、
  (U(    ) < いつもありがとうございます
  | |∨T∨    
  (__)_)
597名無しさん@おーぷん :2016/12/19(月)18:34:35 ID:bxm
もう終わりだ

デスクトップ版Firefox 57で拡張機能はWebExtensionsベースに限定化 - Mozilla Flux
http://rockridge.hatenablog.com/entry/2016/11/25/004343
598名無しさん@おーぷん :2016/12/19(月)19:54:11 ID:VUG
「FireGestures - 設定」ウィンドウのサイズを広くしたい場合は
StylishまたはuserChrome.cssに以下を書き込む(Stylish推奨)

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

/* 「FireGestures - 設定」ウィンドウの最小サイズを大きくする */
@-moz-document url("chrome://firegestures/content/prefs.xul") {
prefwindow {
min-width: 80em !important;
min-height: 60em !important;
}
}

/* 「FireGestures - 編集」ウィンドウの最小サイズを大きくする */
@-moz-document url("chrome://firegestures/content/edit.xul") {
dialog {
min-width: 80em !important;
min-height: 60em !important;
}
}
599名無しさん@おーぷん :2016/12/19(月)19:59:07 ID:VUG
chrome://firegestures/content/prefs.xul をブックマークすればタブで開くことも出来る
しかしウィンドウで開いた方がトラブルがなくて安心
600名無しさん@おーぷん :2016/12/21(水)21:05:14 ID:7jy
http://forums.mozillazine.org/viewtopic.php?p=13455419
ここで欲しかったスクリプトを拾えたのは良いが、俺には複雑過ぎたので簡略化した
でも非表示にした検索エンジンまでポップアップに表示されてしまう

// FireGestures [ポップアップ] 選択(またはクリップボード)文字列を検索エンジンを選択してWeb検索
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
var recentWindow = wm.getMostRecentWindow("navigator:browser");
var browser = recentWindow.gBrowser;
openSearchLink = function(i) {
url = searchUrls[i];
if (!url) {
alert("Invalid URL.");
return;
}
else {
gBrowser.loadOneTab(url, {
inBackground: false,
relatedToCurrent: true
});
}
}
createSearchArray = function(text) {
var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
var tt = ss.getEngines([]);
var arr = [];
for (var i in tt) {
var engine = ss.getEngineByName(tt[i].name);
var submission = engine.getSubmission(text,null);
searchUrls.push(submission.uri.spec);
arr.push({
label: tt[i].name,
oncommand: "openSearchLink(" + i + ");",
class: "menuitem-iconic searchbar-engine-menuitem menuitem-with-favicon",
src: tt[i].iconURI.spec,
}
);
}
return arr;
}
var str = FireGestures.getSelectedText() || readFromClipboard();
var searchUrls = [];
searchArray = createSearchArray(str);
FireGestures.generatePopup(event, searchArray);
601名無しさん@おーぷん :2016/12/22(木)20:40:23 ID:j00
if (!url) {
alert("Invalid URL.");
return;
}
else {

}

↑は要らなかった
602名無しさん@おーぷん :2016/12/22(木)20:56:59 ID:AkL
Firegesturesも来年終わり頃に終わるそうだな
603名無しさん@おーぷん :2016/12/22(木)21:12:50 ID:j00
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
var recentWindow = wm.getMostRecentWindow("navigator:browser");
var browser = recentWindow.gBrowser;

↑これも要らなかった

FireGesturesが使えないFirefoxなんて考えられないね
604名無しさん@おーぷん :2016/12/23(金)02:42:32 ID:nvj
getEngines を getVisibleEngines に変更して削除した検索エンジンが表示されないようにした

// [ポップアップ] 選択(またはクリップボード)文字列を検索エンジンを選択してWeb検索
openSearchLink = function(i) {
url = searchUrls[i];
gBrowser.loadOneTab(url, {
inBackground: false,
relatedToCurrent: true
});
}
createSearchArray = function(text) {
var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
var tt = ss.getVisibleEngines([]);
var arr = [];
for (var i in tt) {
var engine = ss.getEngineByName(tt[i].name);
var submission = engine.getSubmission(text,null);
searchUrls.push(submission.uri.spec);
arr.push({
label: tt[i].name,
oncommand: "openSearchLink(" + i + ");",
class: "menuitem-iconic searchbar-engine-menuitem menuitem-with-favicon",
src: tt[i].iconURI.spec,
});
}
return arr;
}
var str = FireGestures.getSelectedText() || readFromClipboard();
var searchUrls = [];
searchArray = createSearchArray(str);
FireGestures.generatePopup(event, searchArray);
605名無しさん@おーぷん :2016/12/25(日)16:36:05 ID:ByP
FireGestures用スクリプト拾い物

// ページの配色を有効/無効 (Firefox37以降)
const kPrefName = "browser.display.document_color_use";
var prefVal = gPrefService.getIntPref(kPrefName);
prefVal = prefVal == 1 ? 2 : 1;
gPrefService.setIntPref(kPrefName, prefVal);

// 選択(またはクリップボード)文字列をサイト内検索/無ければ文字入力ダイアログを表示
var text = FireGestures.getSelectedText() || readFromClipboard();
if (!text) {
text = prompt('Search');
}
var searchString, url;
if (text !== null && text !== '') {
searchString = text + ' site:' + content.window.location.hostname;
url = 'https://www.google.com/search?q=' + encodeURIComponent(searchString);
gBrowser.loadOneTab(url, {
inBackground: false,
relatedToCurrent: true
});
}

// 先頭のタブへフォーカス
gBrowser.selectTabAtIndex(0)

// 末尾のタブへフォーカス
gBrowser.selectTabAtIndex(gBrowser.browsers.length-1)

// タブを先頭へ移動
gBrowser.moveTabToStart()

// タブを末尾へ移動
gBrowser.moveTabToEnd()
606名無しさん@おーぷん :2016/12/25(日)18:43:06 ID:uub
あるがとこぜま~す
607名無しさん@おーぷん :2016/12/27(火)21:23:42 ID:e72
拾ったFireGestures用スクリプトをコピペ改変して貼ってみる

// Web検索バーの文字列をクリップボードへコピーして、その文字列をWeb検索(Googleで検索)
var clipb = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper);
clipb.copyString(document.getElementById('searchbar').value);
var str = readFromClipboard();
gBrowser.loadOneTab('https://www.google.com/search?lr=lang_ja&hl=ja&q='+str, {
inBackground: false,
relatedToCurrent: true
});
608名無しさん@おーぷん :2016/12/27(火)21:26:14 ID:e72
拾ったFireGestures用スクリプトをコピペ改変して貼ってみる

// 選択(またはクリップボード)文字列をWeb検索バーに追加して入力して、
// Web検索バーの文字列をクリップボードへコピーして、
// それらの文字列をWeb検索(Googleで検索)
if (content.getSelection() == "") {
document.getElementById("searchbar").value = document.getElementById("searchbar").value + " " + readFromClipboard();
}
else {
document.getElementById("searchbar").value = document.getElementById("searchbar").value + " " + content.getSelection();
}
var clipb = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper);
clipb.copyString(document.getElementById('searchbar').value);
var str = readFromClipboard();
gBrowser.loadOneTab('https://www.google.com/search?lr=lang_ja&hl=ja&q='+str, {
inBackground: false,
relatedToCurrent: true
});
609名無しさん@おーぷん :2016/12/27(火)21:49:57 ID:e72
Googleのパラメータ

"https://www.google.com/search?q="                      すべての言語から検索
"https://www.google.com/search?lr=lang_ja&hl=ja&q="            日本語のページを検索
"https://www.google.com/images?hl=ja&safe=off&q="             画像検索(safe=off)
"https://www.google.com/search?hl=ja&tbm=vid&tbs=dur:l&safe=off&q=" 動画検索(20分以上)
610名無しさん@おーぷん :2016/12/28(水)20:12:15 ID:Pnk
>>589 を書き換えてみた。でもやっぱり空白タブ上だと稀に検索バーの文字列クリアに失敗する事がある。

// リンクを左隣に前面タブで開く
// 選択範囲のリンクを左側にすべて開く
// Web検索バーの文字列をクリア

var linkURL = FireGestures.getLinkURL();
var linkURLs = FireGestures.gatherLinkURLsInSelection();
if (linkURL) {
var doc = FireGestures.sourceNode.ownerDocument;
FireGestures.checkURL(linkURL, doc);
var pos = gBrowser.mCurrentTab._tPos;
var tab = gBrowser.loadOneTab(linkURL, {
referrerURI: doc.documentURIObject,
charset: doc.characterSet,
inBackground: false,
relatedToCurrent: true
});
gBrowser.moveTabTo(tab, pos);
}
else if (linkURLs) {
for (var i = 0; i < linkURLs.length; i++) {
var pos = gBrowser.mCurrentTab._tPos;
var tab = gBrowser.loadOneTab(linkURLs[i], {
inBackground: true,
relatedToCurrent: true
});
gBrowser.moveTabTo(tab, pos);
}
}
else
document.getElementById("searchbar").value = "";
611名無しさん@おーぷん :2017/01/04(水)23:37:24 ID:dQ7
>>610 を修正してみた。意図した通り動くけど理屈はサッパリ分からない

// リンクを左隣に前面タブで開く/選択範囲のリンクを左側にすべて開く/Web検索バーの文字列をクリア

var linkURL = FireGestures.getLinkURL();
var linkURLs = FireGestures.gatherLinkURLsInSelection();
var sel = FireGestures.getSelectedText();
if (linkURL) {
var pos = gBrowser.mCurrentTab._tPos;
var tab = gBrowser.loadOneTab(linkURL, {
inBackground: false,
relatedToCurrent: true
});
gBrowser.moveTabTo(tab, pos);
return;
}
if (linkURLs) {
for (var i = 0; i < linkURLs.length; i++) {
var pos = gBrowser.mCurrentTab._tPos;
var tab = gBrowser.loadOneTab(linkURLs[i], {
inBackground: true,
relatedToCurrent: true
});
gBrowser.moveTabTo(tab, pos);
}
}
if (!sel || linkURLs.length == 0) {
document.getElementById("searchbar").value = "";
}
612名無しさん@おーぷん :2017/01/06(金)13:31:34 ID:tsB
あるがとこぜま~す
613名無しさん@おーぷん :2017/01/08(日)00:41:08 ID:nOb
>>587 を書き換えてみた。クリップボードが空の時に余計な検索をしてたのを修正

// リンクを前面タブで開く
// 選択範囲のリンクを右側にすべて開く
// 選択(またはクリップボード)文字列を右隣に前面タブでWeb検索 (Googleで検索)

try {
FireGestures._performAction(event, "FireGestures:OpenLinkInFgTab");
}
catch (ex) {
var linkURLs = FireGestures.gatherLinkURLsInSelection();
if (linkURLs) {
for (var i = 0; i < linkURLs.length; i++) {
gBrowser.loadOneTab(linkURLs[i], {
inBackground: true,
relatedToCurrent: true
});
}
}
var sel = FireGestures.getSelectedText() || readFromClipboard();
if (!sel)
throw "No selection";
if (!linkURLs || linkURLs.length == 0) {
gBrowser.loadOneTab('https://www.google.com/search?lr=lang_ja&hl=ja&q='+sel, {
inBackground: false,
relatedToCurrent: true
});
}
}
614名無しさん@おーぷん :2017/01/08(日)00:45:10 ID:nOb
// [ポップアップ] 選択(またはクリップボード)文字列を検索エンジンを選択してWeb検索 (左隣に前面タブで開く)

openSearchLink = function(i) {
url = searchUrls[i];
var pos = gBrowser.mCurrentTab._tPos;
var tab = gBrowser.loadOneTab(url, {
inBackground: false,
relatedToCurrent: true
});
gBrowser.moveTabTo(tab, pos);
}
createSearchArray = function(text) {
var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
var tt = ss.getVisibleEngines([]);
var arr = [];
for (var i in tt) {
var engine = ss.getEngineByName(tt[i].name);
var submission = engine.getSubmission(text,null);
searchUrls.push(submission.uri.spec);
arr.push({
label: tt[i].name,
oncommand: "openSearchLink(" + i + ");",
class: "menuitem-iconic searchbar-engine-menuitem menuitem-with-favicon",
src: tt[i].iconURI.spec,
});
}
return arr;
}
var str = FireGestures.getSelectedText() || readFromClipboard();
var searchUrls = [];
searchArray = createSearchArray(str);
FireGestures.generatePopup(event, searchArray);
615名無しさん@おーぷん :2017/01/08(日)09:32:02 ID:oPS
〆 川 ヽ
(´・ω・`) .。oO(・・・…)
616名無しさん@おーぷん :2017/01/09(月)23:38:37 ID:lB9
>>598 を修正してみた(Stylish推奨)

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

/* 「FireGestures - 設定」ウィンドウの最小サイズを変更 */
@-moz-document url("chrome://firegestures/content/prefs.xul") {
prefwindow {
min-width: 90em;
min-height: 60em;
}
}

/* 「FireGestures - 編集」の最小サイズ、Tabキー幅、フォント、フォントサイズを変更 */
@-moz-document url("chrome://firegestures/content/edit.xul") {
dialog {
min-width: 90em;
min-height: 60em;
}
#gestureScript .textbox-input-box {
-moz-tab-size: 4;
font-family: "フォント名";
font-size: 1em;
}
}
617名無しさん@おーぷん :2017/01/09(月)23:44:10 ID:lB9
拾ったスクリプトを少し改変してみた。FireGesturesで使える

// 選択(クリップボード)文字列をWeb検索バーに追加して入力
var SearchBar = document.getElementById("searchbar");
var val = SearchBar.value;
var selcl = content.getSelection().toString() || readFromClipboard();
SearchBar.value = val + ' ' + selcl;

// 選択(クリップボード)文字列を "" で囲ってWeb検索バーに追加して入力
var SearchBar = document.getElementById("searchbar");
var val = SearchBar.value;
var selcl = content.getSelection().toString() || readFromClipboard();
SearchBar.value = val + ' "' + selcl + '"';

// 選択(クリップボード)文字列を "" で囲ってWeb検索
var SearchBar = document.getElementById("searchbar");
var selcl = content.getSelection().toString() || readFromClipboard();
if (!selcl)
throw "No selection";
SearchBar.value = '"' + selcl + '"';
gBrowser.loadOneTab('https://www.google.com/search?lr=lang_ja&hl=ja&q=' + selcl, {
inBackground: false,
relatedToCurrent: true
});
618名無しさん@おーぷん :2017/01/10(火)11:18:44 ID:cXs
(`・ω・´)ゝブラジャー!
619名無しさん@おーぷん :2017/01/10(火)21:46:28 ID:pJo
>>617 の最後のは、

// 選択(クリップボード)文字列を "" で囲ってWeb検索
var SearchBar = document.getElementById("searchbar");
var selcl = content.getSelection().toString() || readFromClipboard();
if (!selcl)
throw "No selection";
SearchBar.value = '"' + selcl + '"';
gBrowser.loadOneTab('https://www.google.com/search?lr=lang_ja&hl=ja&q=' + SearchBar.value, {
inBackground: false,
relatedToCurrent: true
});

と書かないといけなかった。あるいは、

// 選択(クリップボード)文字列を "" で囲ってWeb検索
var SearchBar = document.getElementById("searchbar");
var selcl = content.getSelection().toString() || readFromClipboard();
if (!selcl)
throw "No selection";
SearchBar.value = '"' + selcl + '"';
gBrowser.loadOneTab('https://www.google.com/search?lr=lang_ja&hl=ja&q=' + '"' + selcl + '"', {
inBackground: false,
relatedToCurrent: true
});

と書いても同じ動作になる。
620名無しさん@おーぷん :2017/01/10(火)23:05:26 ID:pJo
>>608 も修正してみる

// 選択(またはクリップボード)文字列をWeb検索バーに追加して入力して、
// Web検索バーの文字列をクリップボードへコピーして、
// それらの文字列をWeb検索 (Googleで検索)

var SearchBar = document.getElementById("searchbar");
var val = SearchBar.value;
var selcl = content.getSelection().toString() || readFromClipboard();
if (!selcl)
throw "No selection";
SearchBar.value = val + ' ' + selcl;
var clipb = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper);
clipb.copyString(document.getElementById('searchbar').value);
var str = readFromClipboard();
gBrowser.loadOneTab('https://www.google.com/search?lr=lang_ja&hl=ja&q='+str, {
inBackground: false,
relatedToCurrent: true
});
621名無しさん@おーぷん :2017/01/15(日)21:31:44 ID:7G8
誰もいないからFireGesturesのスクリプト貼ってみる
作法を知らないのでおかしなところがあるかもしれない
// リンクを右隣に前面タブで開く
// 選択範囲のリンク、或いは選択範囲(またはクリップボード)のURLを右側に開く
// 選択(またはクリップボード)文字列を検索して右隣に前面タブで開く (Googleで検索)
var linkURL = FireGestures.getLinkURL();
var linkURLs = FireGestures.gatherLinkURLsInSelection();
var sel = FireGestures.getSelectedText() || readFromClipboard();
if (linkURL) {
gBrowser.loadOneTab(linkURL, {
inBackground: false,
relatedToCurrent: true
});
}
else if (linkURLs) {
for (var i = 0; i < linkURLs.length; i++) {
gBrowser.loadOneTab(linkURLs[i], {
inBackground: true,
relatedToCurrent: true
});
}
}
if (!linkURL && !linkURLs || linkURLs.length == 0) {
if (!sel || linkURL)
throw "No selection";
var URLs = [];
var flag = false;
sel.split("\n").forEach(function(str) {
str = str.match(/([\w\+\-\=\$;:\?\.%,!#~\*\/@&]{8,})/);
if (!str || str[1].indexOf(".") < 0)
return;
if (str[1].split("/").length < 3 && str[1].split(".").length < 3)
return;
str = str[1];
if (str.indexOf("ttp://") == 0 || str.indexOf("ttps://") == 0)
str = "h" + str;
gBrowser.loadOneTab(str, {
inBackground: true,
relatedToCurrent: true
});
flag = true;
});
if ( !flag ) {
gBrowser.loadOneTab('https://www.google.com/search?lr=lang_ja&hl=ja&q='+sel, {
inBackground: false,
relatedToCurrent: true
});
}
}
622名無しさん@おーぷん :2017/01/15(日)22:04:48 ID:lfC
// リンクを左隣に背面タブで開く
// 選択範囲のリンク或いは選択範囲(またはクリップボード)のURLを左側に開く
// [ポップアップ] 選択(またはクリップボード)文字列を検索エンジンを選択してWeb検索(左隣に背面タブで開く)

↑のスクリプトを書き込もうとしたら改行が多すぎて拒否られた
この辺でやめておく
623名無しさん@おーぷん :2017/01/16(月)10:59:25 ID:cek
ふっふっふ・・・
624名無しさん@おーぷん :2017/01/20(金)00:30:29 ID:Lvn
誰もいないからFireGesturesのスクリプト貼ってみる

// リンクを現在のタブで開く
// 選択文字列を現在のタブでWeb検索 (Googleで検索)
// ページを更新
var linkURL = FireGestures.getLinkURL();
var sel = FireGestures.getSelectedText();
if (linkURL) {
var doc = FireGestures.sourceNode.ownerDocument;
FireGestures.checkURL(linkURL, doc);
var charset = window.content.document.characterSet;
var referer = makeURI(doc.location.href);
gBrowser.loadURI(linkURL, referer, charset);
return;
}
else if (sel) {
gBrowser.loadURI('https://www.google.com/search?lr=lang_ja&hl=ja&q='+sel);
}
if (!linkURL && !sel) {
FireGestures._performAction(event, "Browser:Reload");
}
625名無しさん@おーぷん :2017/01/29(日)17:24:09 ID:1ZJ
( ゚д゚)ウッウー
626名無しさん@おーぷん :2017/01/29(日)17:49:44 ID:ezT
FirefoxでみているurlをEdgeで開くスクリプトを教えてほしいですばい
627名無しさん@おーぷん :2017/01/29(日)18:03:51 ID:UTj
教えてやりたいがWindows環境がないのでEdgeのパスが分からないし動作チェックもできない
FireGestures用スクリプト「ページを Internet Explorer で開く」を改変すればいいのでは?
http://www.xuldev.org/firegestures/getscripts.php?lang=ja
628名無しさん@おーぷん :2017/01/29(日)19:31:07 ID:ezT
>>627
thx
やってみたけどダメだった><
直接Edgeのあるフォルダまで行ってexeクリックしても立ち上がらない仕様が関係あるのかも
629名無しさん@おーぷん :2017/01/29(日)20:20:38 ID:UTj
「Open With Microsoft Edge」というアドオンがわざわざ作られるくらいだから
かなり変な仕様なんだな。知らなかったよ
630名無しさん@おーぷん :2017/01/29(日)20:44:43 ID:ezT
>>629
ああーやっぱりかわった仕様なのかぁ
素直にIE使います
ありがとう
631名無しさん@おーぷん :2017/02/01(水)00:00:33 ID:gqQ
もしかして
だったりしてな
甘いかな
explorer.exe shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge
632名無しさん@おーぷん :2017/02/01(水)00:23:27 ID:gqQ
\\だったかな
633名無しさん@おーぷん :2017/02/01(水)20:06:08 ID:2q9
>>631
おーわざわざありがとう
しかしスクリプト追加しようとすると。。。

スクリプトにエラーがあります。
SyntaxError: unterminated string literal

ってなるばい><
\\でもやってみた
634名無しさん@おーぷん :2017/03/13(月)22:18:05 ID:2TX
Scrapbookは、Webなんちゃらにどうも対応し得ない気配が……
全データをPDFにでもするしかないか
635名無しさん@おーぷん :2017/03/29(水)00:57:41 ID:Sxm
Firefox52にしたらFireGesturesのスクリプトがいくつか動かなくなった
e10s有効の場合は「window.content.location.href」を
「gBrowser.currentURI.spec」に変更しないといけないようだ
サイト内検索は「content.window.location.hostname」を
「gBrowser.currentURI.host」と変更すると動く
他には「window.content.document.characterSet」なんてのも動かない
かと言ってe10s無効にすると損した気分になるのでそれは嫌だな
636名無しさん@おーぷん :2017/03/29(水)01:10:08 ID:Sxm
「巻き戻し(履歴の先頭へ戻る)」のスクリプトが動かなくなったので
gBrowser.webNavigation.gotoIndex(0); に変えた。
「早送り(履歴の末尾へ進む)」の書き方が分からない。
「スタイルシートを有効にする / 無効にする」も動かない。
gPageStyleMenu.disableStyle();
gPageStyleMenu.switchStyleSheet('');
こうやって別々にジェスチャーを割り当てた。本当はトグルにしたい。
637名無しさん@おーぷん :2017/03/29(水)01:24:21 ID:Sxm
AMOの「FireGestures のレビュー」を読み進めていったら
if (ctrlTab) {
// last active tab
ctrlTab.open();
ctrlTab.pick();
} else {
// tab on the left
gBrowser.tabContainer.advanceSelectedTab(-1, true);
}
なんていうスクリプトが書き込まれていたので、

var tab = gBrowser.mCurrentTab;
if(tab.previousSibling)
ctrlTab.open();
ctrlTab.pick();
gBrowser.removeTab(tab);
こう書いたら「タブを閉じて直前に開いていたタブへフォーカス」に
出来ると思ったら動作がかなり怪しかった
アドオン「FLST」はe10sに対応してないので困る
638名無しさん@おーぷん :2017/03/31(金)21:42:33 ID:lbm
gBrowser.loadOneTab('http://www.google.com/search?q=' + sel, {
inBackground: false, relatedToCurrent: true
});
て書いたら駄目なんだな

gBrowser.loadOneTab('http://www.google.com/search?q=' + encodeURIComponent(sel), {
inBackground: false, relatedToCurrent: true
});
て書いたほうが良いらしい
こうしないと文字列を渡せずにGoogleのトップページが開いてしまう場合がある
例えば http://www.colordic.org/ の #87ceeb みたいな文字列だ
639名無しさん@おーぷん :2017/03/31(金)21:59:54 ID:lbm
// 選択(またはクリップボード)文字列をWeb検索バーに入力してGoogleで検索
var SearchBar = document.getElementById("searchbar");
var sel = FireGestures.getSelectedText() || readFromClipboard();
if (!sel)
throw "No selection";
SearchBar.value = sel;
gBrowser.loadOneTab('https://www.google.com/search?lr=lang_ja&hl=ja&q=' + encodeURIComponent(sel), {
inBackground: false,
relatedToCurrent: true
});

こういう感じかな?
640名無しさん@おーぷん :2017/03/31(金)22:06:17 ID:lbm
こうやったって良いらしい
// 選択文字列をコピーしてその文字列をWeb検索バーに入力してGoogleで検索
goDoCommand("cmd_copy");
var SearchBar = document.getElementById("searchbar");
var sel = FireGestures.getSelectedText();
if (!sel)
throw "No selection";
SearchBar.value = sel;
gBrowser.loadOneTab('https://www.google.com/search?lr=lang_ja&hl=ja&q=' + encodeURIComponent(sel), {
inBackground: false,
relatedToCurrent: true
});
641名無しさん@おーぷん :2017/03/31(金)22:12:56 ID:9mF
ほほう
https://www.google.com/webhp?gl=us&hl=en&gws_rd=cr&pws=0#gl=us&hl=en&pws=0&q=
じゃなくともCOMで検索できるんか
勉強になるわぁ
642名無しさん@おーぷん :2017/03/31(金)22:30:24 ID:lbm
久しぶりにヤフオクで検索したら次のページへ移動できないから何事かと思ったら
最近入れたアドオン「Skip Redirect」にブロックされてた
設定にてExceptionsに「auctions.search.yahoo.co.jp|」と記入したら直った
643名無しさん@おーぷん :2017/03/31(金)23:03:53 ID:lbm
メニューバーの右側余白にPrefBarを表示したら左側のメニューと高さが微妙にずれてたので
Stylishでこうやって対処した

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
/* PrefBarの高さ (メニューバーに表示の場合) */
#prefbar-buttons > toolbaritem {
margin-top: 4px !important;
margin-bottom: 0px !important;
}

CSSの知識なんて無いから乱暴かもしれないが直ればそれでいいや
644名無しさん@おーぷん :2017/03/31(金)23:08:07 ID:lbm
あとついでにこうやった

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
/* メニューバーの文字サイズとメニュー間の間隔を変更 */
#main-menubar menu {
font-size: 13px !important;
padding-left: 0px !important;
padding-right: 0px !important;
}

12pxでも良かったかもしれない
pxとかptとかemとかあってめんどくせえなといつも思う
645名無しさん@おーぷん :2017/03/31(金)23:45:38 ID:lbm
Firefox52へ移行して気がついた
Googleで調べものしてる時、SearchWPで検索文字列をハイライトしているのに
「次へ」をクリックしてページ移動するとハイライトが解除されてしまう
しかしFireGestures公式の「前のページ / 次のページ (リンク自動検出)」
というジェスチャーを実行するとハイライトを維持したままページ移動できる
でもついうっかり「次へ」をクリックしてしまい絶望する
646名無しさん@おーぷん :2017/03/31(金)23:52:01 ID:lbm
頭が悪いのでuBlock Originの使い方が分からない
そのうち捨てる
647名無しさん@おーぷん :2017/04/03(月)21:45:21 ID:qlo
FireGesturesに
moveTo(250,30);resizeTo(1024,768)
と書いて、アドオン「Browsizer」の代わりとして使う事にした(数字は適当)
Firefoxを起動した時に望まない位置に表示されてしまった時に便利と思う
ブックマークレットとして
javascript:window.moveTo(250,30);resizeTo(1024,768)
というようにブックマークツールバーに置いても使えるけど使い勝手は良くない

「ウィンドウサイズを変更するのではなく切り替えるスクリプト」というのもあるし
「任意の位置・サイズを指定して新しいウィンドウを開く 」スクリプトもある
648名無しさん@おーぷん :2017/04/26(水)01:06:05 ID:tr7
Skip RedirectイマイチだったからGoogle search link fixに代えた
もうこれしかねえ
シンプルなリダイレクト系アドオンはほとんど逝ってしまったな
649名無しさん@おーぷん :2017/04/27(木)22:57:33 ID:qCU
Scrapbook Xは終了らしい。

> if Mozilla really honors its plan in Firefox, ScrapBook X will no more work on it.
ttps://github.com/danny0838/firefox-scrapbook/issues/209

FireGesturesもおそらく……
650名無しさん@おーぷん :2017/06/28(水)19:01:16 ID:ssy
android版のpalemoonにnoscriptを入れたけど
何処にも設定出来る項目もボタンもメニュー項目も出現しないんだがorz
いったいどうすりゃぁいいのか?!
651名無しさん@おーぷん :2017/06/28(水)19:21:46 ID:gNe
palemoonの拡張は別物だし
さすがにスレチだろ
652名無しさん@おーぷん :2017/06/29(木)23:42:31 ID:tei
専用スレもないし、Mozilla系ブラウザの"拡張機能の入手"自体がFirefox(Mozilla)サイトへと誘導している現状すら知らんバカの話はいらないw
653名無しさん@おーぷん :2017/08/26(土)23:01:30 ID:jhI
AutoScrolling (標準の自動スクロールを無効にしても動く)
Cookie AutoDelete (ホワイトリスト系ではまともな方)
Drag-Select Link Text (リンク上の文字列を選択できる、HorizontalからHoldに変更)
DragLinks (リンクドラッグ系ではまともな方、テキストも開ける)
Enhancer for YouTube
Google search link fix
NoScript (旧式) ←57対応予定あり
SearchWP (旧式) ←置き換えの効かない困ったアドオン
Simple Window Resizer (ウインドウの位置とサイズを戻す)
Tabsmack (タブを先頭へ移動/末尾へ移動)
uBlock Origin (開発版は57対応)
User-Agent Switcher (作成者:Linder の奴)
whatIP (IPv4とかIPv6とかロケーションバーに表示)
ZoomImage - 画像拡大
FireGestures (旧式) ←今頑張ってEasystrokeに移行中、Liuxでまともに動く好みのアドオンが無い

とりあえずこれで様子見る
SearchWPとFireGesturesは最強コンビだったのに氏んでしまう
泣けるぜ
654名無しさん@おーぷん :2017/08/27(日)01:04:16 ID:AAD
Remove Tabs By Misutaも追加 (右側のタブを閉じる、他のタブを閉じるを追加)
Easystrokeにまたジェスチャーが増えた
「左側のタブを閉じる」と「すべてのタブを閉じる」も追加したいが良いアドオンが無いな
655名無しさん@おーぷん :2017/08/27(日)23:33:14 ID:AAD
「Remove Tabs By Misuta」がコンテンツエリアコンテキストメニューに追加したメニューが消せない
いくら調べても消し方が分からない
こういうのはコンテキストメニューに追加するのではなくツールバーボタンにしてくれれば楽なのにな
あるいはメニューの表示・非表示の設定メニュー付けるとか
656名無しさん@おーぷん :2017/08/30(水)00:11:46 ID:jsU
FireGesturesからEasystrokeへ移行中だがうまくいっていない
QuantumVim とか Vimium-FF とかの機能も借りようとしたけど気が乗らない
FireGesturesに戻して11月まで様子見ようかな
そしたらキーボードショートカット付きアドオンがある程度揃ってるかもしれない
Easystrokeに移植するのはその頃でいいかも
657名無しさん@おーぷん :2017/08/30(水)20:36:43 ID:jsU
しかしEasystrokeによってChromiumにリンク中クリックの長押し・短押しを付加できたのは良い収穫だった
658名無しさん@おーぷん :2017/09/08(金)01:39:32 ID:oDi
Tabsmack (タブを先頭へ移動/末尾へ移動)
Remove Tabs By Misuta (右側のタブを閉じる、他のタブを閉じる)
↑を削除し、代わりに「Saka Key」を使うことにした
VimiumやShortkeysみたいにキーボード操作するアドオンなのだが
これらはカスタマイズ方法がよく分からず、アホの子の俺には無理だったので
比較的簡単なSaka KeyとEasystrokeを使いマウスジェスチャーを増やしていきたい
659名無しさん@おーぷん :2017/09/08(金)01:40:42 ID:oDi
Linuxにはxautomationというのがあってそれを入れると
キーボードやマウス入力をエミュレートするxteというのが使える
WindowsだとUWSCというものがあるらしいが詳しくは知らない
「Saka key」と「xte」と「Easystroke」を組み合わせると、

「タブを閉じる (左のタブを選択)」
[Command] xte 'keydown Control_L' 'key w' 'keyup Control_L' 'keydown Control_L' 'key Page_Up' 'keyup Control_L'
↑みたいにEasystrokeにコマンド登録して使える
660名無しさん@おーぷん :2017/09/08(金)01:41:42 ID:oDi
「リンクを新しいタブで開く (中クリック長押しで前面タブ)」← (Click & Hold) Button2
[Button] Shift+CtrlButton1

「タブを閉じて先頭のタブを選択」
[Command] xte 'keydown Control_L' 'key w' 'keyup Control_L' 'keydown Alt_L' 'key 1' 'keyup Alt_L'

「タブを閉じて最後のタブを選択」
[Command] xte 'keydown Control_L' 'key w' 'keyup Control_L' 'keydown Alt_L' 'key 9' 'keyup Alt_L'

「Close Other Tabs (Saka Key 依存)」
[Command] xte 'key x' 'keydown Shift_L' 'key x' 'keyup Shift_L'

「すべてのタブを閉じる (Saka Keyの x Shift-x & xx を実行)」
[Command] xte 'key x' 'keydown Shift_L' 'key x' 'keyup Shift_L' 'key x' 'key x'

「Close Right Tabs (Saka Key初期設定から x9に変更)」
[Command] xte 'key x' 'keydown 9' 'keyup 9'

「Close Left Tabs (Saka Key初期設定から x8に変更)」
[Command] xte 'key x' 'keydown 8' 'keyup 8'
661名無しさん@おーぷん :2017/09/08(金)01:42:26 ID:oDi
「Go Up (Saka Key 依存)」
[Command] xte 'key u' 'keydown u' 'keyup u'

「Go To Root (Saka key 依存)」
[Command] xte 'key u' 'keydown Shift_L' 'key u' 'keyup Shift_L'

「Move Tab First (Saka key 依存)」
[Command] xte 'keydown Shift_L' 'key i' 'keyup Shift_L'

「Move Tab Last (Saka key 依存)」
[Command] xte 'keydown Shift_L' 'key o' 'keyup Shift_L'

「Copy Current URL (Saka key 依存)」
[Command] xte 'key y' 'key y'
662名無しさん@おーぷん :2017/09/08(金)01:42:59 ID:oDi
「選択文字列をコピーして検索バーに貼り付け」
[Command] xte 'keydown Control_L' 'key c' 'keyup Control_L' 'usleep 10000' 'keydown Control_L' 'key k' 'keyup Control_L' 'usleep 10000' 'keydown Control_L' 'key v' 'keyup Control_L' 'usleep 10000' 'mouseclick 1'

「選択文字列をコピーして検索バーに貼り付けてWeb検索」
[Command] xte 'keydown Control_L' 'key c' 'keyup Control_L' 'usleep 10000' 'keydown Control_L' 'key k' 'keyup Control_L' 'usleep 10000' 'keydown Control_L' 'key v' 'keyup Control_L' 'usleep 10000' 'key Return'

「検索バーの文字列をクリア」
[Command] xte 'keydown Control_L' 'key k' 'keyup Control_L' 'key Delete'
663名無しさん@おーぷん :2017/09/08(金)01:52:57 ID:oDi
Saka key は ] [ の 初期設定がおかしいので別のキーに変えたほうが良い
うちのキーボードは悪くない
664名無しさん@おーぷん :2017/09/16(土)20:30:59 ID:guA
Saka keyからVimiumに乗り換えた
goPrevious (前のページ)
goNext (次のページ)
を使えるようになって良かった
ただVimiumちょっと設定が分かりにくい
665名無しさん@おーぷん :2017/09/27(水)22:54:46 ID:VxZ
Scrapbook Xの後継、webscrapbookが同作者氏から公開されているが
全くの別物のように見える

ttps://github.com/danny0838/webscrapbook

貯めこんだデータの移行とか検索とかは無理か
666名無しさん@おーぷん :2017/09/29(金)21:57:02 ID:kCV
AutoScrolling
Cookie AutoDelete
Drag-Select Link Text
DragLinks
Enhancer for YouTube
Invert Colors (firefoxinvertcolors) ←ページの色を反転
Google search link fix
Multiple Paste and Go Button ←クリップボードから複数のURLを開く
No Color
NoScript (旧式)
Open in Google Translate ←何気に大活躍
Search Site WE ←サイト内検索
SearchWP (旧式)
Simple Window Resizer
uBlock Origin
User-Agent Switcher
Vimium
whatIP
ZoomImage - 画像拡大
テキストリンク&Google翻訳

とうとうFireGesturesを削除してしまった、そしてアドオンがやたらと増えた
667名無しさん@おーぷん :2017/09/29(金)23:09:36 ID:kCV
LinuxのEasystrokeで使えるマウスジェスチャー (要xte)

「選択範囲のURLやリンクまたはクリップボードのURLをすべて開く(Multiple Paste and Go Button に依存)」
xte 'keydown Control_L' 'key c' 'keyup Control_L' 'usleep 30000' 'keydown Control_L' 'keydown Shift_L' 'key v' 'keyup Shift_L' 'keyup Control_L'

「サイト内検索 (Search Site WE に依存)」
xte 'keydown Alt_L' 'key k' 'keyup Alt_L' 'usleep 200000' 'key Right' 'usleep 30000' 'key Return'

「スタイルシートを使用しない」
xte 'keydown Alt_L' 'key v' 'keyup Alt_L' 'usleep 30000' 'key y' 'usleep 30000' 'key n'

「標準スタイルシート」
xte 'keydown Alt_L' 'key v' 'keyup Alt_L' 'usleep 30000' 'key y' 'usleep 30000' 'key b'

「すべてのタブを再読み込み (空白タブ上では無効)」
xte 'keydown Alt_L' 'key d' 'keyup Alt_L' 'usleep 30000' 'keydown Shift_L' 'key Tab' 'key Tab' 'keyup Shift_L' 'keydown Shift_L' 'key F10' 'keyup Shift_L' 'key a' 'usleep 30000' 'key Escape'
668名無しさん@おーぷん :2017/10/01(日)14:25:45 ID:4WG
LinuxやジョブズOSでマウスジェスチャが効かないってのは、
右クリックして動かしてもコンテキストメニューが出たままで邪魔ってことか
669名無しさん@おーぷん :2017/10/01(日)23:09:15 ID:j7Z
だからアドオンではなく外部マウスジェスチャーアプリに頼るしかない
あとAMOでアドオンが無効にされる問題を回避する目的もある
670名無しさん@おーぷん :2017/10/04(水)11:47:24 ID:0Ak
アドオンの審査が人の目を介さずに自動でなされるようになるらしい。
要するにChromeと同じになるってことだな。
悪徳アドオン急増待ったなしか。

ttps://www.ghacks.net/2017/10/03/mozilla-needs-to-adjust-firefoxs-new-review-process/
671名無しさん@おーぷん :2017/10/07(土)23:52:30 ID:d1D
Sageのように、個々のアイテムをクリック/Enterで目的のページを直接表示しうる
RSSリーダって異様に少ないな

Linux環境でも使えるジェスチャ拡張は、Mouse Gesture Eventsあたりがある

テキスト選択→検索する拡張は、Quick Context Searchのようにシンプルなのがない
マウスの移動量が大きすぎる

Scrapbookはもう無理
672名無しさん@おーぷん :2017/10/20(金)21:02:45 ID:4fI
//Rewind 巻き戻し(履歴の先頭へ戻る)
window.history.go(1 - window.history.length);

//FastForward 早送り(履歴の末尾へ進む)
window.history.go(window.history.length - 1);

↑を「Shortkeys (Custom Keyboard Shortcuts) for Firefox」に追加。
Easystrokeで「巻き戻し・早送り」が出来るようになって良かった
673名無しさん@おーぷん :2017/10/30(月)20:35:32 ID:GeY
「Swift Selection Search」がCtrl+Shift+Spaceで検索エンジンをポップアップ表示できるので
FireGesturesで検索エンジンポップアップを多用してた人には喜ばれるかもしれない
ただ細かい部分で使いにくい所もあり、「日本語用コンテキスト検索」と併用が良いかなと思った
674名無しさん@おーぷん :2017/11/18(土)02:05:40 ID:5ot
Easystrokeに登録した狐用ジェスチャーが95個になりそのうち100個になりそう

「タブを閉じて左のタブへフォーカス」 (アドオン Focus Last Selected Tab に依存)
[Command] xte 'keydown Control_L' 'key Page_Up' 'keyup Control_L' 'keydown Control_L' 'key Page_Down' 'keyup Control_L' 'usleep 30000' 'keydown Control_L' 'key w' 'keyup Control_L'

「タブを閉じて右のタブへフォーカス」 (アドオン Focus Last Selected Tab に依存)
[Command] xte 'keydown Control_L' 'key Page_Down' 'keyup Control_L' 'keydown Control_L' 'key Page_Up' 'keyup Control_L' 'usleep 30000' 'keydown Control_L' 'key w' 'keyup Control_L'

「タブを閉じて直前のタブへフォーカス」 (アドオン Focus Last Selected Tab に依存)
[Key] Ctrl+W

「右隣のタブのみ1個だけ閉じる」 (アドオン Focus Last Selected Tab の影響があるため変更)
[Command] xte 'keydown Control_L' 'key Page_Down' 'keyup Control_L' 'usleep 30000' 'keydown Control_L' 'key w' 'keyup Control_L'

「タブを閉じて先頭のタブを選択」 (アドオン Focus Last Selected Tab の影響があるため変更)
[Command] xte 'keydown Control_L' 'key w' 'keyup Control_L' 'usleep 200000'; xte 'keydown Alt_L' 'key 1' 'keyup Alt_L';

「タブを閉じて最後のタブを選択」 (アドオン Focus Last Selected Tab の影影響があるため変更)
[Command] xte 'keydown Control_L' 'key w' 'keyup Control_L' 'usleep 200000'; xte 'keydown Alt_L' 'key 9' 'keyup Alt_L';
675名無しさん@おーぷん :2017/11/19(日)20:46:36 ID:oEO
Foxy Gesturesでも「タブを閉じて左のタブへフォーカス」ができる
"Close tab and focus left"
https://codegists.com/code/close-tab-x-missing-safari/
以下スクリプト
executeInBackground(async () => {
const tabs = await browser.tabs.query({currentWindow: true});
const activeTab = tabs.find((t) => t.active);

if (activeTab) {
let nextIdx = activeTab.index - 1;
let nextTab;

if (nextIdx >= 0) {
nextTab = tabs.find((t) => t.index == nextIdx);
}

await browser.tabs.remove(activeTab.id);
if (nextTab) {
await browser.tabs.update(nextTab.id, {active: true});
}
}
}).catch((e) => {
console.error(e);
});
676名無しさん@おーぷん :2017/11/24(金)01:20:04 ID:Ie1
「ResizeIT 2」というウインドウの位置とサイズをキーボードショートカットで変更するアドオンがあって
ResizeITのフォークなんだけどEasystrokeにAlt+1とかAlt+2とか最大4つ登録して使える
677名無しさん@おーぷん :2017/12/10(日)01:57:37 ID:GEh
再起動スクリプトを見つけた
http://egg.5ch.net/test/read.cgi/software/1506030128/997

EasystrokeにControl+Shift+Alt+Rで再起動を登録した
うちの環境だと再起動ボタンは表示されないけど無くても困らない
ジオングの足みたいなもの
678名無しさん@おーぷん :2017/12/18(月)02:15:18 ID:KNz
http://egg.5ch.net/test/read.cgi/software/1506030128/997
↑の再起動スクリプトを元に別のスクリプトに改変してみた

// Control+Shift+Alt+W で左側のタブをすべて閉じる
var CloseTabsOnLeftKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseTabsOnLeftKey);
CloseTabsOnLeftKey.id = "CloseTabsOnLeft-key";
CloseTabsOnLeftKey.setAttribute("key", "W");
CloseTabsOnLeftKey.setAttribute("oncommand", "CloseTabsOnLeft();");
CloseTabsOnLeftKey.setAttribute("modifiers", "control shift alt");

function CloseTabsOnLeft() {
var tabs = gBrowser.tabContainer.childNodes;
for (var i = tabs.length - 1; tabs[i] != gBrowser.mCurrentTab; i--) {
}
for (i--; i >=0 ; i--) {
gBrowser.removeTab(tabs[i]);
}
}
679名無しさん@おーぷん :2017/12/18(月)02:15:51 ID:KNz
// Control+Shift+Alt+E で右側のタブをすべて閉じる
var CloseTabsOnRightKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseTabsOnRightKey);
CloseTabsOnRightKey.id = "CloseTabsOnRight-key";
CloseTabsOnRightKey.setAttribute("key", "E");
CloseTabsOnRightKey.setAttribute("oncommand", "CloseTabsOnRight();");
CloseTabsOnRightKey.setAttribute("modifiers", "control shift alt");

function CloseTabsOnRight() {
var tabs = gBrowser.tabContainer.childNodes;
for (var i = tabs.length - 1; tabs[i] != gBrowser.selectedTab; i--) {
gBrowser.removeTab(tabs[i]);
}
}
680名無しさん@おーぷん :2017/12/18(月)02:16:15 ID:KNz
// Control+Shift+Alt+Q で他のタブをすべて閉じる
var CloseOtherTabsKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseOtherTabsKey);
CloseOtherTabsKey.id = "CloseOtherTabs-key";
CloseOtherTabsKey.setAttribute("key", "Q");
CloseOtherTabsKey.setAttribute("oncommand", "CloseOtherTabs();");
CloseOtherTabsKey.setAttribute("modifiers", "control shift alt");

function CloseOtherTabs() {
var browser = getBrowser(); browser.removeAllTabsBut(browser.mCurrentTab);
}
681名無しさん@おーぷん :2017/12/18(月)02:16:37 ID:KNz
// Control+Shift+Alt+T ですべてのタブを閉じる
var CloseAllTabsKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseAllTabsKey);
CloseAllTabsKey.id = "CloseAllTabs-key";
CloseAllTabsKey.setAttribute("key", "T");
CloseAllTabsKey.setAttribute("oncommand", "CloseAllTabs();");
CloseAllTabsKey.setAttribute("modifiers", "control shift alt");

function CloseAllTabs() {
var browser = getBrowser(); var ctab = browser.addTab("about:newtab"); browser.removeAllTabsBut(ctab);
}
682名無しさん@おーぷん :2017/12/18(月)02:17:07 ID:KNz
// Control+Shift+Alt+I でURL中の数値を増加
var IncrementURLKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(IncrementURLKey);
IncrementURLKey.id = "IncrementURL-key";
IncrementURLKey.setAttribute("key", "I");
IncrementURLKey.setAttribute("oncommand", "IncrementURL(+1);");
IncrementURLKey.setAttribute("modifiers", "control shift alt");

function IncrementURL(aIncrement) {
var url = gBrowser.currentURI.spec;
if (!url.match(/(\d+)(\D*)$/))
throw "No numeric value in URL";
var num = RegExp.$1;
var digit = (num.charAt(0) == "0") ? num.length : null;
num = parseInt(num, 10) + aIncrement;
if (num < 0)
throw "Cannot decrement number in URL anymore";
num = num.toString();
digit = digit - num.length;
for (var i = 0; i < digit; i++)
num = "0" + num;
loadURI(RegExp.leftContext + num + RegExp.$2);
}
683名無しさん@おーぷん :2017/12/18(月)02:17:32 ID:KNz
// Control+Shift+Alt+D でURL中の数値を減少
var DecrementURLKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(DecrementURLKey);
DecrementURLKey.id = "DecrementURL-key";
DecrementURLKey.setAttribute("key", "D");
DecrementURLKey.setAttribute("oncommand", "DecrementURL(-1);");
DecrementURLKey.setAttribute("modifiers", "control shift alt");

function DecrementURL(aIncrement) {
var url = gBrowser.currentURI.spec;
if (!url.match(/(\d+)(\D*)$/))
throw "No numeric value in URL";
var num = RegExp.$1;
var digit = (num.charAt(0) == "0") ? num.length : null;
num = parseInt(num, 10) + aIncrement;
if (num < 0)
throw "Cannot decrement number in URL anymore";
num = num.toString();
digit = digit - num.length;
for (var i = 0; i < digit; i++)
num = "0" + num;
loadURI(RegExp.leftContext + num + RegExp.$2);
}
684名無しさん@おーぷん :2017/12/18(月)02:18:00 ID:KNz
// Control+Shift+Alt+A で履歴の先頭へ戻る
var RewindKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(RewindKey);
RewindKey.id = "Rewind-key";
RewindKey.setAttribute("key", "A");
RewindKey.setAttribute("oncommand", "Rewind();");
RewindKey.setAttribute("modifiers", "control shift alt");

function Rewind() {
SessionStore.getSessionHistory(gBrowser.selectedTab, history => {
gBrowser.gotoIndex(history.entries.length = 0)
});
}
685名無しさん@おーぷん :2017/12/18(月)02:18:20 ID:KNz
// Control+Shift+Alt+Z で履歴の末尾へ進む
var FastForwardKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(FastForwardKey);
FastForwardKey.id = "FastForward-key";
FastForwardKey.setAttribute("key", "Z");
FastForwardKey.setAttribute("oncommand", "FastForward();");
FastForwardKey.setAttribute("modifiers", "control shift alt");

function FastForward() {
SessionStore.getSessionHistory(gBrowser.selectedTab, history => {
gBrowser.gotoIndex(history.entries.length - 1)
});
}
686名無しさん@おーぷん :2017/12/18(月)02:27:17 ID:KNz
「Shortkeys (Custom Keyboard Shortcuts) for Firefox」を消した
更新したら設定飛んだのでもう要らない
やりたいことはucjsスクリプトで代替出来た
687名無しさん@おーぷん :2017/12/19(火)00:26:41 ID:3Yq
// Control+Shift+Alt+F でタブを閉じて先頭のタブへフォーカス
var CloseTabFocusFirstKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseTabFocusFirstKey);
CloseTabFocusFirstKey.id = "CloseTabFocusFirst-key";
CloseTabFocusFirstKey.setAttribute("key", "F");
CloseTabFocusFirstKey.setAttribute("oncommand", "CloseTabFocusFirst();");
CloseTabFocusFirstKey.setAttribute("modifiers", "control shift alt");

function CloseTabFocusFirst() {
var tab = gBrowser.mCurrentTab;
if(tab.previousSibling)
gBrowser.tabContainer.selectedIndex = 0;
gBrowser.removeTab(tab);
}
688名無しさん@おーぷん :2017/12/19(火)00:27:00 ID:3Yq
// Control+Shift+Alt+L でタブを閉じて末尾のタブへフォーカス
var CloseTabFocusLastKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseTabFocusLastKey);
CloseTabFocusLastKey.id = "CloseTabFocusLast-key";
CloseTabFocusLastKey.setAttribute("key", "L");
CloseTabFocusLastKey.setAttribute("oncommand", "CloseTabFocusLast();");
CloseTabFocusLastKey.setAttribute("modifiers", "control shift alt");

function CloseTabFocusLast() {
var tab = gBrowser.mCurrentTab;
if(tab.previousSibling)
gBrowser.tabContainer.selectedIndex = 0;
gBrowser.selectTabAtIndex(gBrowser.browsers.length-1);
gBrowser.removeTab(tab);
}
689名無しさん@おーぷん :2017/12/19(火)00:27:35 ID:3Yq
// Control+Shift+Alt+S で左隣のタブのみ閉じる
var CloseTheLeftOneKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseTheLeftOneKey);
CloseTheLeftOneKey.id = "CloseTheLeftOne-key";
CloseTheLeftOneKey.setAttribute("key", "S");
CloseTheLeftOneKey.setAttribute("oncommand", "CloseTheLeftOne();");
CloseTheLeftOneKey.setAttribute("modifiers", "control shift alt");

function CloseTheLeftOne() {
var childNodes = gBrowser.tabContainer.childNodes;
var currentTab = gBrowser.tabContainer.selectedIndex;
if ( currentTab > 0 )
gBrowser.removeTab(childNodes[currentTab - 1]);
}
690名無しさん@おーぷん :2017/12/19(火)00:27:58 ID:3Yq
// Control+Shift+Alt+X で右隣のタブのみ閉じる
var CloseTheRightOneKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseTheRightOneKey);
CloseTheRightOneKey.id = "CloseTheRightOne-key";
CloseTheRightOneKey.setAttribute("key", "X");
CloseTheRightOneKey.setAttribute("oncommand", "CloseTheRightOne();");
CloseTheRightOneKey.setAttribute("modifiers", "control shift alt");

function CloseTheRightOne() {
var childNodes = gBrowser.tabContainer.childNodes;
var currentTab = gBrowser.tabContainer.selectedIndex;
if ( currentTab < childNodes.length - 1 )
gBrowser.removeTab(childNodes[currentTab + 1]);
}
691名無しさん@おーぷん :2017/12/19(火)00:28:26 ID:3Yq
// Control+Shift+Alt+C でページの配色を有効/無効
var DocumentColorKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(DocumentColorKey);
DocumentColorKey.id = "DocumentColor-key";
DocumentColorKey.setAttribute("key", "C");
DocumentColorKey.setAttribute("oncommand", "DocumentColor();");
DocumentColorKey.setAttribute("modifiers", "control shift alt");

function DocumentColor() {
const kPrefName = "browser.display.document_color_use";
var prefVal = gPrefService.getIntPref(kPrefName);
prefVal = prefVal == 1 ? 2 : 1;
gPrefService.setIntPref(kPrefName, prefVal);
}
692名無しさん@おーぷん :2017/12/23(土)00:28:27 ID:APT
「Open in Google Translate」を削除して「テキストリンク&Google翻訳」に絞った
でもページ翻訳ボタンがある所までマウスカーソルを移動させるのがだるいので
FireGesturesの「ページを翻訳」スクリプトを拝借しchromeフォルダに放り込み
ショートカットをEasystrokeでジェスチャー登録した

// Control+Shift+Alt+G でGoogle翻訳(en → ja)
var GoogleTranslateKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(GoogleTranslateKey);
GoogleTranslateKey.id = "GoogleTranslate-key";
GoogleTranslateKey.setAttribute("key", "G");
GoogleTranslateKey.setAttribute("oncommand", "GoogleTranslate();");
GoogleTranslateKey.setAttribute("modifiers", "control shift alt");

function GoogleTranslate() {
const FROM = "en";
const TO = "ja";
const DOMAIN = "translate.google.com";
//const URL = "http://" + DOMAIN + "/translate?langpair=" + FROM + "-" + TO + "&hl=" + TO + "&u=";
const URL = "http://" + DOMAIN + "/translate?sl=en&tl=ja" + FROM + "-" + TO + "&hl=" + TO + "&u=";
var curURL = gBrowser.currentURI.spec;
if (curURL.indexOf(DOMAIN) != -1)
BrowserReload();
else
//gBrowser.loadURI(URL + encodeURIComponent(curURL));
gBrowser.loadOneTab(URL + encodeURIComponent(curURL), {inBackground: false, relatedToCurrent: true});
}
693名無しさん@おーぷん :2018/01/31(水)00:46:55 ID:gyG
AutoScrolling
Cookie AutoDelete
Drag-Select Link Text
Enhancer for YouTube
Google search link fix
Keyboard Savior Xtreme
Multiple Paste and Go Button
No Coin - Block miners on the web!
NoScript
Remove Anything
ResizeIT 2
Search Engine Favicons
Search Site WE
Stay Current
Swift Selection Search
Toggle Referrer
uBlock Origin
uMatrix
User-Agent Switcher
Vimium
Violentmonkey
whatIP
テキストリンク&Google翻訳
No Color (false)

後は>>678-692のucjsスクリプトがあればとりあえず満足 (Firefox58.0.1では動いてるがその内動かなくなる)
FireGesturesを失ったがとりあえず今のところは代替できてる
アドオンが増えたが特に重いとは感じないな
694名無しさん@おーぷん :2018/02/03(土)22:37:57 ID:oiY
想定外だったのはマイニングという新たな脅威が登場した事
勝手に掘られてCPU使用率高くなるのでNo Coinみたいなやつが必要になった
695名無しさん@おーぷん :2018/02/17(土)01:29:10 ID:qha
「アドオンが更新されました。」
       ↓
「最近更新したアドオンを表示」
       ↓
・Enhancer for YouTube リリースノートを表示 → 「・・・。」
・No Coin リリースノートを表示 → 「・・・。」
・Vimium リリースノートを表示 → 「・・・。」

もうほんと勘弁してくれ (#`Д´)
696名無しさん@おーぷん :2018/02/25(日)01:29:55 ID:kKZ
VimiumはGithubにリリースノートがあるから別に
問題なのはどこにも書いてないやつ
697名無しさん@おーぷん :2018/03/16(金)23:13:28 ID:xFs
>>691 のスクリプト
Firefox59からページの配色を有効/無効が効かなくなった
about:configの設定に外から変更を加えられなくなったのかも
仕方ないからボタン押して切り替えるタイプのアドオンに頼るしかない(No Colorなど)
ショートカット使えるそれ系アドオンはInvert Colorsしか見つからない
でもRemove Anythingのショートカットとかぶるから使えない残念
698名無しさん@おーぷん :2018/03/23(金)23:41:12 ID:O92
「No Color」から「Toggle Website Colors」に乗り換え
userChrome.cssに以下を追記した

/* コンテキストメニューの「Toggle Website Colors」の項目を一番上に表示 */
#_d9d33933-40dc-4da1-8dc5-5b0449ce7d46__toggle-colors-menu {
-moz-box-ordinal-group: 0 !important;
}
699名無しさん@おーぷん :2018/05/05(土)11:44:56 ID:nxy
最近特に大きな不満もないから書くこと無くなったな
SearchWP代替にisearとserachWP_modoki.uc.jsに頼るしか無いとかそれくらいのものだ
700名無しさん@おーぷん :2018/05/11(金)22:42:17 ID:1nZ
>>698が以下のように変更になったらしい(Firefox60)

#_d9d33933-40dc-4da1-8dc5-5b0449ce7d46_-menuitem-_toggle-colors-menu {
-moz-box-ordinal-group: 0 !important;
}
701名無しさん@おーぷん :2018/05/12(土)21:52:26 ID:jMy
「ResizeIT 2」が更新され、Linuxでは修飾キーがaltキーからctrlキーに変更になった
タブのフォーカスが切り替わって戸惑う事があったのでctrlキーになって良かった
あとツールバーボタンでウインドウサイズが切り替えられるようになった
702名無しさん@おーぷん :2018/05/17(木)22:33:44 ID:lkY
isearとView Image Resurrected両方入れてるとページの描画が重い
isearの設定で「ハイライトバーを有効にする」のチェックを外すと軽くなる
ハイライトバーは無くても別に気にしない
703名無しさん@おーぷん :2018/07/04(水)23:33:52 ID:y12
スクリプトの書き方を知らないけど、必要だから拾い物を切り貼りして動くようにしてみた
正しい作法を誰か教えてくれないかな

// Control+Shift+Alt+B でタブを閉じて左のタブへフォーカス
var CloseTabFocusLeftKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseTabFocusLeftKey);
CloseTabFocusLeftKey.id = "CloseTabFocusLeft-key";
CloseTabFocusLeftKey.setAttribute("key", "B");
CloseTabFocusLeftKey.setAttribute("oncommand", "CloseTabFocusLeft();");
CloseTabFocusLeftKey.setAttribute("modifiers", "control shift alt");

function CloseTabFocusLeft() {
gBrowser.tabContainer.advanceSelectedTab(-1, true);
var childNodes = gBrowser.tabContainer.childNodes;
var currentTab = gBrowser.tabContainer.selectedIndex;
if ( currentTab < childNodes.length - 1 )
gBrowser.removeTab(childNodes[currentTab + 1]);
else {
gBrowser.tabContainer.advanceSelectedTab(1, true);
gBrowser.removeCurrentTab();
}
}
704名無しさん@おーぷん :2018/07/04(水)23:35:13 ID:y12
// Control+Shift+Alt+N でタブを閉じて右のタブへフォーカス
var CloseTabFocusRightKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseTabFocusRightKey);
CloseTabFocusRightKey.id = "CloseTabFocusRight-key";
CloseTabFocusRightKey.setAttribute("key", "N");
CloseTabFocusRightKey.setAttribute("oncommand", "CloseTabFocusRight();");
CloseTabFocusRightKey.setAttribute("modifiers", "control shift alt");

function CloseTabFocusRight() {
gBrowser.tabContainer.advanceSelectedTab(1, true);
var childNodes = gBrowser.tabContainer.childNodes;
var currentTab = gBrowser.tabContainer.selectedIndex;
if ( currentTab > 0 )
gBrowser.removeTab(childNodes[currentTab - 1]);
else {
gBrowser.tabContainer.advanceSelectedTab(-1, true);
gBrowser.removeCurrentTab();
}
}
705名無しさん@おーぷん :2018/07/04(水)23:36:38 ID:y12
// Control+Shift+Alt+W で左側のタブをすべて閉じる
var CloseTabsOnLeftKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseTabsOnLeftKey);
CloseTabsOnLeftKey.id = "CloseTabsOnLeft-key";
CloseTabsOnLeftKey.setAttribute("key", "W");
CloseTabsOnLeftKey.setAttribute("oncommand", "CloseTabsOnLeft();");
CloseTabsOnLeftKey.setAttribute("modifiers", "control shift alt");

function CloseTabsOnLeft() {
var tabs = gBrowser.tabContainer;
var ctab = gBrowser.selectedTab;
var i;
for(i=tabs.childNodes.length-1; tabs.childNodes[i] != ctab; i--){}
for(i--; i>=0; i--){
gBrowser.removeTab(tabs.childNodes[i]);
}
}
706名無しさん@おーぷん :2018/07/04(水)23:37:10 ID:y12
// Control+Shift+Alt+E で右側のタブをすべて閉じる
var CloseTabsOnRightKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseTabsOnRightKey);
CloseTabsOnRightKey.id = "CloseTabsOnRight-key";
CloseTabsOnRightKey.setAttribute("key", "E");
CloseTabsOnRightKey.setAttribute("oncommand", "CloseTabsOnRight();");
CloseTabsOnRightKey.setAttribute("modifiers", "control shift alt");

function CloseTabsOnRight() {
var tabs = gBrowser.tabContainer;
var ctab = gBrowser.selectedTab;
for(var i=tabs.childNodes.length-1; tabs.childNodes[i] != ctab; i--){
gBrowser.removeTab(tabs.childNodes[i]);
}
}
707名無しさん@おーぷん :2018/07/04(水)23:37:39 ID:y12
// Control+Shift+Alt+O で他のタブをすべて閉じる
var CloseOtherTabsKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseOtherTabsKey);
CloseOtherTabsKey.id = "CloseOtherTabs-key";
CloseOtherTabsKey.setAttribute("key", "O");
CloseOtherTabsKey.setAttribute("oncommand", "CloseOtherTabs();");
CloseOtherTabsKey.setAttribute("modifiers", "control shift alt");

function CloseOtherTabs() {
var ctab = gBrowser.selectedTab;
gBrowser.removeAllTabsBut(ctab);
}
708名無しさん@おーぷん :2018/07/04(水)23:38:10 ID:y12
// Control+Shift+Alt+Q ですべてのタブを閉じる
var CloseAllTabsKey = document.createElement("key")
document.getElementById("mainKeyset").appendChild(CloseAllTabsKey);
CloseAllTabsKey.id = "CloseAllTabs-key";
CloseAllTabsKey.setAttribute("key", "Q");
CloseAllTabsKey.setAttribute("oncommand", "CloseAllTabs();");
CloseAllTabsKey.setAttribute("modifiers", "control shift alt");

function CloseAllTabs() {
var ctab = gBrowser.addTab("about:blank");
gBrowser.removeAllTabsBut(ctab);
if(gBrowser.tabContainer.childNodes.length > 1) {
gBrowser.removeTab(ctab);
}
}
709名無しさん@おーぷん :2018/07/04(水)23:42:20 ID:y12
5chで見かけたトグるコードをインスパイアしますた

//Control+Shift+Alt+Kでページ内検索バーの表示・非表示をトグル
var toggleFindbar_Key = document.createElement("key")
document.getElementById("mainKeyset").appendChild(toggleFindbar_Key);
toggleFindbar_Key.id = "toggleFindbar_-key";
toggleFindbar_Key.setAttribute("key", "K");
toggleFindbar_Key.setAttribute("oncommand", "toggleFindbar_();");
toggleFindbar_Key.setAttribute("modifiers", "control shift alt");

function toggleFindbar_() {
if (gFindBar) { gFindBar.hidden? gFindBar.onFindCommand(): gFindBar.close(); } else { gLazyFindCommand("onFindCommand"); }
}
710名無しさん@おーぷん :2018/07/04(水)23:44:39 ID:y12
ページ内検索バーのトグルボタン

(function() {
if (location != 'chrome://browser/content/browser.xul') return;
try {
// ページ内検索
CustomizableUI.createWidget({
id: 'ToggleFind-button',
type: 'custom',
defaultArea: CustomizableUI.AREA_NAVBAR,
onBuild: function(aDocument) {
var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
var props = {
id: 'ToggleFind-button',
class: 'toolbarbutton-1 chromeclass-toolbar-additional',
label: '\u30da\u30fc\u30b8\u5185\u691c\u7d22(\u30c8\u30b0\u30eb)',
tooltiptext: '\u30da\u30fc\u30b8\u5185\u691c\u7d22\u30d0\u30fc\u3092\u958b\u9589\u3057\u307e\u3059',
style: 'list-style-image: url("chrome://browser/skin/search-glass.svg");',
onclick: 'if (event.button == 0) { \
if (gFindBar) { gFindBar.hidden? gFindBar.onFindCommand(): gFindBar.close(); } else { gLazyFindCommand("onFindCommand"); } \
}; '
};
for (var p in props)
toolbaritem.setAttribute(p, props[p]);
return toolbaritem;
}
});
} catch(e) { };
})();
711名無しさん@おーぷん :2018/08/01(水)14:10:51 ID:jUj
使ってなかったけど「非標準の 条件付き catch 節」が廃止されてたのは地味にショック
https://developer.mozilla.org/ja/docs/Mozilla/Firefox/Releases/59
712名無しさん@おーぷん :2018/09/07(金)00:27:50 ID:cE0
Firefoxを62.0にして気づいた
>>708のスクリプトの
var ctab = gBrowser.addTab("about:blank");
という部分を
var ctab = gBrowser.addTab("about:newtab");
に変更しないといけないな

userChrome.cssに
/* ロード中のページが真っ白になるのを別の色に変更 */
#tabbrowser-tabpanels {background-color: #000033 !important}
と書いてたから気になってしょうがない
713名無しさん@おーぷん :2018/09/08(土)22:38:29 ID:Wn4
>>710
ページ内検索バーのトグルボタンありがとうございます
714名無しさん@おーぷん :2018/09/23(日)01:00:49 ID:QWa
>>709 これ要らなくなった
今後はtoggle-findbar.uc.jsを使う
https://u6.getuploader.com/script/download/1692

新着レスの表示 | ここまで読んだ

名前: mail:





Mozilla Firefox 拡張機能スレッド【お兄ちゃん】
CRITEO