相关疑难解决方法(0)

防止浏览器扩展注入Javascript代码

浏览器允许扩展注入代码,操纵DOM等.

多年来,我注意到我正在观看的网站(app)上有很多和各种未被捕获的错误(使用window.onerror),这些错误是由Firefox,Chrome和Internet Explorer(所有版本)上的未知浏览器扩展生成的.

这些错误似乎并没有打断任何事情.现在我想增加这个网站的安全性,因为它将开始处理信用卡.我亲眼目睹了恶意软件/间谍软件感染了浏览器,修改了浏览器扩展(无辜的浏览器扩展,修改为报告给攻击者/脚本小子)作为键盘记录程序(使用琐碎的onkey*事件处理程序,或只是input.value检查).

是否有方法(元标记等)通知浏览器禁止代码注入或读取DOM,标准或非标准?该网页已经是SSL,但这似乎并不重要(如提示浏览器激活更严格的扩展安全性).

.

可能的解决方法(一种拉伸与一种简单的元标记)由他人或我的头脑建议:

  • 用于输入数字的虚拟键盘+非文本输入(也称为数字的img)
  • 使用Flash的远程桌面(有人建议使用HTML5,但这并不能解决浏览器扩展监听键盘事件;只有Flash,Java等可以).
  • 非常复杂的基于Javascript的保护(删除非白名单的事件监听器,内存中输入值以及受实际星号字符保护的输入等)(不可行,除非它已经存在)
  • 具有防病毒角色的浏览器扩展或可能以某种方式保护特定网页(这是不可行的,如果不产生大量问题,甚至可能无法实现)

修改:Google Chrome会在隐身模式下停用扩展程序,但是,没有标准方法可以检测或自动启用隐身模式,因此必须显示永久警告.

javascript browser firefox internet-explorer google-chrome

29
推荐指数
2
解决办法
5291
查看次数

有没有任何浏览器实现DOM3 EventListenerList?

答案是2010年3月没有回复:

浏览器EventListenerList实现

我想知道从那以后是否有任何进展.

如果答案仍然没有...任何浏览器可能支持它的任何指示?

browser dom addeventlistener dom-events

25
推荐指数
1
解决办法
1万
查看次数

获取附加到元素的所有事件处理程序

我需要找到附加到#mySelect的所有事件处理程序,如果事件是通过jQuery创建的,我可以得到它,这里alert(e)只显示"change"而不是"click"

JavaScript:

$("#mySelect").change(function(){
    alert("changed");
})           
$.each($._data(  $("#mySelect")[0], "events" ), function(e) {
    alert(e);
})
Run Code Online (Sandbox Code Playgroud)

Html:

<select id="mySelect" onclick="alert('hello')" >
    <option value="1">option 1</option>
    <option value="2">option 2</option>
    <option value="3">option 3</option>
    <option value="4">option 4</option>
</select>
Run Code Online (Sandbox Code Playgroud)

javascript jquery

21
推荐指数
2
解决办法
3万
查看次数

如何检查元素是否有点击处理程序?

可能重复:
测试事件处理程序是否绑定到jQuery中的元素

试图做以下(链接是'a'标签的jQuery对象):

 link.data("events") //undefined even if link has event handlers
 jQuery.data(link, 'events') //undefined always also
 jQuery._data(link, 'events') //undefined always also
Run Code Online (Sandbox Code Playgroud)

使用jquery-1.8.3

那么,如何检查元素是否有点击处理程序?

javascript jquery javascript-events

20
推荐指数
1
解决办法
5万
查看次数

如何知道页面上有多少个事件监听器

我正在使用Javascript构建一个相当大的应用程序.它是一个可以更改不同视图的单个页面.所有视图都有自己的变量,事件,监听器,元素等.

在处理大型集合和多个事件时,有时可以很好地了解页面上发生了什么.

我知道所有浏览器都有开发人员工具,但有时很难点击所有元素等等.我找不到一些选项.

我感兴趣的一件事是知道当前在页面上收听了多少事件.通过这种方式,我可以确认我没有创建僵尸.

如果溶剂是开发人员工具,请告诉我在哪里查看和做什么.最重要的是,选择哪种浏览器.

javascript

18
推荐指数
3
解决办法
1万
查看次数

如何使用JavaScript在DOM节点上查找事件侦听器

我仍然无法相信这是不可能的,但是有一种方法可以循环访问dom并查看使用'addEventListener'附加的所有事件处理程序.这篇文章和许多其他人说没有.

如果是这种情况,那么Chrome的检查员或Firebug等应用程序如何显示它们,他们会这样做?我猜他们可能会以某种方式增加dom的方法,以便他们可以跟踪绑定的内容.

javascript

17
推荐指数
2
解决办法
3万
查看次数

克隆元素及其所有事件

我正在页面中克隆一个textarea,但克隆的元素没有任何主要元素的事件,有没有办法克隆克隆元素中的所有事件?

var dupNode = node.cloneNode(deep);
Run Code Online (Sandbox Code Playgroud)

javascript clonenode javascript-events

16
推荐指数
1
解决办法
1万
查看次数

“未捕获的引用错误:未定义 getEventListeners”

我正在尝试删除监听器。在控制台中,下面的代码正在运行。当我在 Chrome 扩展中使用代码时,我得到:“Uncaught ReferenceError:getEventListeners 未定义”。为什么会出现这种情况?是否有与“getEventListeners”功能等效的函数?

document.addEventListener('click', fireContentLoadedEvent, false);

function fireContentLoadedEvent () {
    console.log ("DOMContentLoaded");
    for (let i = 0; i < document.getElementsByClassName("someClass").length; i++) {
        plusButton = document.getElementsByClassName("someClass")[i]

        if ( getEventListeners(plusButton)["click"].length > 1) {

            plusButton.removeEventListener("click", getEventListeners(plusButton).click[1].listener);

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome google-chrome-extension referenceerror google-chrome-devtools

13
推荐指数
1
解决办法
1万
查看次数

如何获取与DOM元素相关的事件?

我有一个HTML文档.
可以使用javascript获取与文档中特定FORM元素中的每个元素相关联的事件.

var element = document.forms[i].elements[j];
Run Code Online (Sandbox Code Playgroud)

这样我就能得到第i个形式的第j个元素,但是我可以得到与元素相关的事件. 表单中可以有任意数量的元素.我使用的是IE 8. 谢谢





编辑:
实际上我试图将HTML DOM序列化为XML.

我做的是:

createXML : function() {

        objSerializeDOM.msg += "";
        objSerializeDOM.msg += "<?xml version='1.0' encoding='UTF-8'?>\n\n";
        // Get all the forms in a document.
        var forms = document.forms;

        for ( var i = 0; i < forms.length; i++) {
            // Get all the elements on per form basis.
            elements = document.forms[i].elements;
            objSerializeDOM.msg += "<FORM name=\"" + forms[i].name + "\" method=\"" …
Run Code Online (Sandbox Code Playgroud)

javascript dom javascript-events

11
推荐指数
1
解决办法
3262
查看次数

如何检查元素的相关事件处理程序?

可能重复:
如何使用FireBug(或类似工具)调试Javascript/jQuery事件绑定
如何在调试时从JavaScript节点或JavaScript代码中查找事件侦听器?
如何跟踪像onclick onblur这样的JavaScript事件?

我正在使用Firebug来检查HTML代码和CSS.我需要找到与元素关联的事件和处理程序.

使用Inspect按钮,我可以看到所有的CSS,但找不到事件处理程序.

javascript firebug

10
推荐指数
0
解决办法
6755
查看次数