fiag
管理员
管理员
  • UID1188
  • 注册日期2004-12-21
  • 最后登录2025-08-20
  • 发帖数4681
  • 经验686枚
  • 威望0点
  • 贡献值402点
  • 好评度51点
阅读:4696回复:6

User Script 中可能用得上的函数

楼主#
更多 发布于:2007-05-09 19:53
/*** UserScript  可能用得上的函数 ***/
/* 由ID获取元素
var d = $('myDiv');
var divs = $('myDiv','myOtherDiv');
*/
function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1)
      return element;

    elements.push(element);
  }

  return elements;
}

// 根据XPath获取元素
function xpath(query) {
    return document.evaluate(query, document, null,
        XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
}

// 根据XPath获取元素, 有些不同
function $x(p, context) {
  if (!context) context = document;
  var i, arr = [], xpr = document.evaluate(p, context, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  for (i = 0; item = xpr.snapshotItem(i); i++) arr.push(item);
  return arr;
}

// 添加 CSS 样式
function addGlobalStyle(css) {
    var head, style;
    head = document.getElementsByTagName('head')[0];
    if (!head) { return; }
    style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
}

/***** 删除 START *****/
// 删除已知元素
function removeElement(e)
{
  if (e) {
    e.parentNode.removeChild(e);
  }
}

// 按照ID删除元素
function removeByID(id)
{
  removeElement(document.getElementById(id));
}

// 按照NAME删除元素
function removeByName(name)
{
  var allElements = document.getElementsByName(name);
  for (var i = 0; i < allElements.length; i++) {
    thisElement = allElements[i];
    removeElement(thisElement);
  }
}

// 按照XPath删除元素
function removeByXPath(x) {
  var allElements = xpath(x);
  for (var i = 0; i < allElements.snapshotLength; i++) {
    thisElement = allElements.snapshotItem(i);
    removeElement(thisElement);
  }
}
/***** 删除 END *****/

//配合GM_getValue使用的序列化与反序列化
function deserialize(name, def) {
  return eval(GM_getValue(name, (def || '({})')));
}

function serialize(name, val) {
  GM_setValue(name, uneval(val));
}


参考资料:
深入浅出 Greasemonkey

PS:有空再接着总结
dangerboy_dx
非常火狐
非常火狐
  • UID9755
  • 注册日期2005-11-12
  • 最后登录2025-07-29
  • 发帖数979
  • 经验119枚
  • 威望0点
  • 贡献值86点
  • 好评度7点
  • 社区居民
  • 忠实会员
1楼#
发布于:2007-05-09 19:53
^_^,有空添加到wiki去吧
195
195
千年狐狸
千年狐狸
  • UID3920
  • 注册日期2005-03-12
  • 最后登录2023-01-15
  • 发帖数1123
  • 经验50枚
  • 威望0点
  • 贡献值0点
  • 好评度2点
  • 社区居民
  • 忠实会员
2楼#
发布于:2007-05-09 19:53
这东西很有必要。就是需要这样的整理。

通篇地看E文说明,头都大了。
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2025-08-21
  • 发帖数18502
  • 经验4858枚
  • 威望5点
  • 贡献值4324点
  • 好评度1118点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
3楼#
发布于:2007-05-09 19:53
继续总结 非常有用。fiag自从翻译了dive ino greasemonkey后,对gm也算是比较了解了!支持!
Firefox More than meets your experience
fiag
管理员
管理员
  • UID1188
  • 注册日期2004-12-21
  • 最后登录2025-08-20
  • 发帖数4681
  • 经验686枚
  • 威望0点
  • 贡献值402点
  • 好评度51点
4楼#
发布于:2007-05-09 19:53
今天Greasemonkey升级到5月的版本,有中文界面了。需要更新《深入浅出 Greasemonkey》了
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2025-08-21
  • 发帖数18502
  • 经验4858枚
  • 威望5点
  • 贡献值4324点
  • 好评度1118点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
5楼#
发布于:2007-05-09 19:53
fiag:今天Greasemonkey升级到5月的版本,有中文界面了。需要更新《深入浅出 Greasemonkey》了回到原帖


我汉化的!

这个扩展我之前在babelzilla看到了,于是就按照前人的汉化成果稍加修改!

深入浅出greasemonkey改改把 呵呵!
Firefox More than meets your experience
drsu
狐狸大王
狐狸大王
  • UID1387
  • 注册日期2004-12-25
  • 最后登录2008-12-20
  • 发帖数367
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2007-05-09 19:53
人手啊人手,缺人手啊。。。
游客

返回顶部