yyt_sjq
小狐狸
小狐狸
  • UID32252
  • 注册日期2010-03-10
  • 最后登录2010-03-10
  • 发帖数1
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:1538回复:1

实现搜索但不切换搜索引擎

楼主#
更多 发布于:2010-03-10 10:49
点击搜索引擎图标后只实现搜索但不切换搜索引擎

FF中能不能实现呢?
alanfly
千年狐狸
千年狐狸
  • UID31035
  • 注册日期2009-11-10
  • 最后登录2025-04-23
  • 发帖数2783
  • 经验595枚
  • 威望1点
  • 贡献值132点
  • 好评度108点
  • 社区居民
  • 最爱沙发
  • 忠实会员
1楼#
发布于:2010-03-10 10:49
扩展我不清楚有没有,uc脚本倒是有挺多的,
下面这个是中键点击临时使用搜索引擎,不切换搜素引擎:
/* Middle Click and Go
 *   nanto_vi (TOYAMA Nao), 2006-12-30
 *
 * Paste-and-Go when middle-clicking on the URL bar and 
 * Past-and-Search when middle-cliking on the search bar.
 *
 * Original Author: Gomita
 * Original Extension: Search Clipboard (a user script for userChrome.js)
 *   <http://amb.vis.ne.jp/mozilla/?p=53>
 */

(function MiddleClickAndGo() {

init: {
  document.getElementById("urlbar").mInputElt
          .addEventListener("click", onURLBarClick, false);
  // XXX A click event doesn't fire when the search bar doesn't have focus...
  document.getElementById("searchbar").textbox.mInputElt
          .addEventListener("mouseup", onSearchBarClick, false);
  document.getElementById("searchbar")._popup
          .addEventListener("click", onSearchPopupClick, false);
}

function getClipboardText() {
  try {
    var clip = Cc["@mozilla.org/widget/clipboard;1"]
                 .createInstance(Ci.nsIClipboard);
    var trans = Cc["@mozilla.org/widget/transferable;1"]
                  .createInstance(Ci.nsITransferable);
    trans.addDataFlavor("text/unicode");
    clip.getData(trans, clip.kGlobalClipboard);

    var string = {};
    trans.getTransferData("text/unicode", string, {});
    return string.value.QueryInterface(Ci.nsISupportsString).data;
  } catch (e) {
    return "";
  }
}

function onURLBarClick(aEvent) {
  if (aEvent.button != 1) return;
  var uri = getClipboardText();
  if (!uri) return;

  if (aEvent.ctrlKey)
    gBrowser.loadOneTab(uri, null, null, null, false);
  else
    loadURI(uri);
  content.focus();

  aEvent.preventDefault();
  aEvent.stopPropagation();
}

function onSearchBarClick(aEvent) {
  searchForClipboardText(document.getElementById("searchbar").currentEngine,
                         aEvent);
}

function onSearchPopupClick(aEvent) {
  if ("engine" in aEvent.target &&
      searchForClipboardText(aEvent.target.engine, aEvent))
    this.hidePopup();
}

function searchForClipboardText(aEngine, aEvent) {
  if (aEvent.button != 1) return false;
  var keyword = getClipboardText().replace(/^\s+|\s+$/g, "");
  if (!keyword) return false;

  var searchBar = document.getElementById("searchbar");
  searchBar.textbox.textValue = keyword;
  searchBar.removeAttribute("empty");

  var submission = aEngine.getSubmission(keyword, null);
  if (aEvent.ctrlKey)
    gBrowser.loadOneTab(submission.uri.spec, null, null,
                        submission.postData, false);
  else
    loadURI(submission.uri.spec, null, submission.postData);
  content.focus();

  aEvent.preventDefault();
  aEvent.stopPropagation();
  return true;
}

})();
游客

返回顶部