【问题标题】:Unbind .onselectstart return false解除绑定 .onselectstart 返回 false
【发布时间】:2013-07-04 11:52:13
【问题描述】:

我正在尝试编写一个用户脚本,它将从页面上的 id 中删除 onselectstart 的影响。

到目前为止,我假设我可以使用以下方法重新绑定原始函数:

document.getElementById('nodrag').onselectstart = function() { /* code original action */ };

JSFiddle

任何想法都将不胜感激。

【问题讨论】:

  • 你想在原来的 selectStart 函数之前/之后做点什么吗?这对我来说并不完全清楚。如果是这样,您可以存储旧的 selectStart 事件处理程序并在新的 selectStart 处理程序中的任何位置调用它。
  • 嗨 LightStyle,这将在之后。我正在编写的脚本将是一个用户脚本(greasemonkey),并将允许在页面创建者试图不允许的页面上选择文本。谢谢。
  • 将你的函数包裹在window.onload中,它应该可以工作
  • 谢谢,看来也没有这样做。我正在寻找的是一些能够恢复选择文本能力的代码。 jsfiddle.net/onmylemon/V3SAt/2
  • 您是否有可能在页面末尾加载脚本?如果可以,您也可以不将代码包装在 window.onload 中并保持原样(仅在 JSFiddle 中尝试此操作,在左侧的“框架和扩展”中选择“不换行 - 在<body>”中而不是“加载”

标签: javascript dom-events greasemonkey userscripts


【解决方案1】:

看来我设法找到了答案。感谢 LightStyle 给我的提示。

所以我创建了一个带有document.getElementById('nodrag').onselectstart = function() { }; 的脚本标签并将其附加到正文中。

// Create the script to remove the nodrag from chrome
var script = document.createElement('script');
script.type='text/javascript';
script.innerHTML = "document.getElementById('nodrag').onselectstart = function() {  };";
var body = document.getElementsByTagName('body')[0];
body.appendChild(script);

这在传统环境中可能不起作用,但在用户脚本上却很有魅力。这是最终的脚本:

https://gist.github.com/lgoldstien/5928021

【讨论】:

  • 我问过如何让它与 body 标签一起工作 <body onselectstart="return false" onload=""> ,我现在可以用这个 script.innerHTML = "document.getElementsBytagName('body')[0].onselectstart = function() { };"; 禁用它
猜你喜欢
  • 2023-03-06
  • 2013-02-20
  • 1970-01-01
  • 2010-12-02
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 2017-08-20
  • 1970-01-01
相关资源
最近更新 更多