【问题标题】:how to change anchor onclick event如何更改锚点onclick事件
【发布时间】:2017-12-15 08:59:07
【问题描述】:

我想更改以下 onclick 事件,来自:

view_tree_element('subscription','45592063',1);
focusit('1_45592063',true)

onclick="show_dialog('feed_info_dialog',{subscription_id: 45592063}

即从原始的onclick事件中获取数字45592063,

将其存储在变量中并将锚点更改为 show_dialog 事件

我该怎么做?

【问题讨论】:

  • 欢迎来到 SO。请访问help center 了解内容和How to Ask。提示:发布工作和代码
  • 你为什么要这样做?
  • 因为第一个函数重定向在同一个窗口中(之后你必须回到初始页面),而第二个打开一个弹出窗口,更方便,你不必离开页面

标签: javascript greasemonkey-4


【解决方案1】:

看看这个。 如果有,它会替换 onclick 处理程序。您可以在onc var

中添加“订阅”是否存在的测试

我将 ID 存储在链接本身的属性中

var re = /'subscription','(\d+)'/; // a number in quotes after 'subscription',
window.onload=function() { // or addEventListener
  var links = document.querySelectorAll("a[onclick]");
  for (var i=0; i<links.length;i++) {
    var onc = links[i].onclick.toString();
    if (onc) {
      var id = onc.match(re);
      if (id) { // something found
        links[i].setAttribute("sub-id",id[1]);
        links[i].onclick = function() {
          show_dialog('feed_info_dialog',{subscription_id: this.getAttribute("sub-id")});
          return false; // cancel link
        }  
      }
    }  
  }
}
// this will of course be YOUR show_dialog
function show_dialog(a,b) { 
  console.log(a,b);
}
<a href="#" onclick="view_tree_element('subscription','45592063',1);
focusit('1_45592063',true)">Click</a><br/>
<a href="#">No onClick</a><br/>
<a href="#" onclick="alert('subscription','',1)">Click - no id</a><br/>
<a href="#" onclick="view_tree_element('subscription','55592063',1);
focusit('1_55592063',true)">Click</a>

【讨论】:

  • 看起来不错,但它不起作用,我正在尝试创建一个无法/不想覆盖 show_dialog 的greasemonkey 脚本,它是页面的功能,并且创建了锚点动态地,在页面完成加载后
  • 我没有覆盖 show_dialog。你没有给我,所以我自己做了。
  • 我将代码添加到了一个greasemonkey脚本中,但它在我想要的页面上不起作用:inoreader.com/dashboard
  • 好的,我去greasemonkey论坛问问,非常感谢,我把结果写在这里
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-03
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2014-03-21
相关资源
最近更新 更多