// INFO // var INFO = Mitsugu Oyama MIT

You can save image on the currnet context area by this plugin.

'simg' :simg

You can save image on the currnet context area by this plugin.

; commands.addUserCommand( ['simg'], 'Save Image File current page', function(){ let contents=gBrowser.selectedBrowser.contentDocument; let Cc=Components.classes; let Ci=Components.interfaces; let cookie=contents.cookie; let xhrImg; let directoryPicker=function() { let path; let fp=Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); fp.init(window,'Select Directory',Ci.nsIFilePicker.modeGetFolder); let result=fp.show(); switch(result){ case Ci.nsIFilePicker.returnOK: path=fp.file.path; break; default: case Ci.nsIFilePicker.returnCancel: return ''; } return path; }; let savePath=directoryPicker(); if(savePath.length<1) return; let imgURL=contents.URL; let trueCurrntImg=function(){ let fileName=imgURL.substr(imgURL.lastIndexOf('/')); if (-1!=fileName.indexOf('?')){ fileName=fileName.substr(0,fileName.indexOf('?')); } savePath=savePath+fileName; let instream=xhrImg.responseText; let aFile=Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); aFile.initWithPath(savePath); let outstream=Cc["@mozilla.org/network/safe-file-output-stream;1"] .createInstance(Ci.nsIFileOutputStream); outstream.init(aFile,0x02|0x08|0x20,0664,0); outstream.write(instream,instream.length); if (outstream instanceof Ci.nsISafeOutputStream) { outstream.finish(); }else{ outstream.close(); } }; let falseCurrntImg=function(){ liberator.echo("Image file accept error."); return false; }; xhrImg=Cc["@mozilla.org/xmlextras/xmlhttprequest;1"] .createInstance(); xhrImg.QueryInterface(Ci.nsIDOMEventTarget); xhrImg.addEventListener("load",trueCurrntImg,false); xhrImg.addEventListener("error",falseCurrntImg,false); xhrImg.QueryInterface(Ci.nsIXMLHttpRequest); xhrImg.open("GET",imgURL,true); xhrImg.overrideMimeType('text/plain;charset=x-user-defined'); xhrImg.setRequestHeader('Referer',contents.URL); xhrImg.setRequestHeader('Cookie',cookie); xhrImg.send(null); } ); c5994903174f5bf0c6'/>
path: root/prevent_focus_ietab.js
blob: d0d8adc9f37fb40200a044a84588d3a7b440136a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//
// prevent_focus_ietab.js
//
// LICENSE: {{{
// Copyright (c) 2009 snaka<snaka.gml@gmail.com>
//
// Distributable under the terms of an new BSD style license.
// }}}
//
// PLUGIN INFO: {{{
var PLUGIN_INFO =
<VimperatorPlugin>
  <name>prevent_focus_ietab</name>
  <description>This plugin prevents focusing IETab automaticaly.</description>
  <description lang="ja">IETabに勝手にフォーカスを奪われてそうさ不能になるのを防ぐ</description>
  <minVersion>2.0pre</minVersion>
  <maxVersion>2.0</maxVersion>
  <updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/prevent_focus_ietab.js</updateURL>
  <author mail="snaka.gml@gmail.com" homepage="http://vimperator.g.hatena.ne.jp/snaka72/">snaka</author>
  <license>MIT style license</license>
  <version>1.0.1</version>
  <detail><![CDATA[
    == Subject ==
    This plugin prevents IEtab get focusing with mannerless.
    == Usage ==
    Place this file to vimp's plugin directory. That's all.
  ]]></detail>
  <detail lang="ja"><![CDATA[
    == 概要 ==
    IETabにフォーカスを勝手に奪われて操作不能になるのを防ぐ
    == 使い方 ==
    vimpのpluginディレクトリにこのファイルを格納してくださいそれだけです
  ]]></detail>
</VimperatorPlugin>;
// }}}

(function() {
  if (!gIeTab || !gIeTab.onTabSelected)
    return;

  liberator.log("replace IeTab.onTabSelected() function");
  var func = gIeTab.onTabSelected.toSource();
  var newFunc = func.replace(/window\.setTimeout\(gIeTab\.focusIeTab, 0\);/, '');
  gIeTab.removeEventListener("appcontent", "select", gIeTab.onTabSelected);
  gIeTab.addEventListener("appcontent", "select", new Function(newFunc));
})();

// vim:sw=2 ts=2 et si fdm=marker: