小编SOL*_*OLO的帖子

参数e(事件)究竟是什么以及为什么将它传递给JavaScript函数?

好吧,当我学习JavaScript时,我读过的所有书籍和互联网文章都显示了将参数传递给e处理JavaScript事件的函数的代码,例如下面的代码块:

function myEvent(e) {
    var evtType = e.type
    alert(evtType)
    // displays click, or whatever the event type was
}
Run Code Online (Sandbox Code Playgroud)

我总是接受它的方式,但现在我有一些问题(这对我来说非常混乱):

  1. e是从哪里来的?当我查看整个JavaScript文件时,e似乎根本不存在.
  2. 为什么将此参数传递e给函数?如果我没有传递e给他们,功能是否会停止工作?
  3. 考虑下面的代码块.e传递给匿名内部函数的事件变量().假设我想在匿名函数之外使用事件对象(可能在行上方/下方的element.onkeypress行中).我怎样才能做到这一点?

    element.onkeypress = function(e) {
        if(e.keyCode) {
            element.keyCode = e.keyCode;
        } else {
            element.keyCode = e.charCode;
        }
    };
    
    Run Code Online (Sandbox Code Playgroud)

javascript events javascript-events

32
推荐指数
4
解决办法
4万
查看次数

一般用Java覆盖一个方法

如果我有这样的基类,我无法改变:

public abstract class A {
    public abstract Object get(int i);
}
Run Code Online (Sandbox Code Playgroud)

我尝试用这样的类来扩展它B:

public class B extends A{
    @Override
    public String get(int i){
        //impl
        return "SomeString";
    }
}
Run Code Online (Sandbox Code Playgroud)

一切都好.但是如果我尝试的话,我试图让它更通用的失败:

public class C extends A{
    @Override
    public <T extends Object> T get(int i){
        //impl
        return (T)someObj;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想不出有什么理由不应该被禁止.根据我的理解,泛型类型T绑定到Object- 这是请求的返回类型A.如果我可以把StringAnyObject作为我的回归类型B,我为什么不被允许<T extends Object> T进入我的C班级?

从我的观点来看,另一个奇怪的行为是这样的另一种方法:

public class D extends A{

    @Override
    public Object get(int …
Run Code Online (Sandbox Code Playgroud)

java generics overriding casting type-conversion

23
推荐指数
2
解决办法
5516
查看次数

如何激活IDEA的"运行仪表板"功能

我在项目A中有一个名为" 运行仪表板 " 的窗口工具,但我无法在项目B中激活此窗口.有谁知道如何解决这个问题?此功能出现在IntelliJ IDEA版本2017.3中.

这就是我在项目A中看到的: 运行相关按钮的长菜单,最后带有

这是我在项目B中看到的: 运行相关按钮的菜单,类似于项目A中的按钮,但没有

此选项存在但在项目B中无法激活: 搜索

但它可以在项目A中激活: 搜索

java intellij-idea

23
推荐指数
3
解决办法
8224
查看次数

无法打开调试器端口:java.net.ConnectException"Connection refused"

我正在使用Android Studio v1.0.1在macOS Yosemite 10.10中构建应用程序.当我尝试调试应用程序时,它安装正确但有错误

运行[app]时出错:无法打开调试器端口:java.net.ConnectException"Connection refused"

当我运行DDMS时,它会显示已连接的设备和进程.尝试在Android Studio中进行调试时会出现问题.

在其他论坛中,我发现有些东西可能改变了调试器的端口,但这并没有解决我的问题.

java debugging android android-studio

22
推荐指数
3
解决办法
5万
查看次数

用于跳转到行尾以输入分号的备用键组合

由于自动代码完成,我经常发现自己在括号之间,必须到达行的末尾才能添加不可避免的分号.

然后我必须向右移动,向右移动,击中End,然后再次返回键盘的主要部分以进入分号.

我认为这对我的打字流程感到不安,特别是在笔记本上书写的时候,因为那时我的那些动作非常低效.

在主键盘区域内是否已有一个用于到达行尾或添加分号的组合键?或者是否可以在这些方面配置PhpStorm?

(我正在使用PhpStorm,但我在这个问题上添加了IntelliJ IDEA标签,因为我猜他们在这些基本功能方面会有类似之处.)

键盘的照片与字母和数字键,以及紧邻的键,突出显示

keyboard-shortcuts intellij-idea phpstorm

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

使用WebLogic服务器进行热部署?

我有一个在WebLogic服务器上运行的企业应用程序.

当我修改任何Java类时,我必须.ear每次都构建文件并部署到服务器.即使是一个小的修改,我也需要构建整个应用程序并部署到服务器.服务器大约需要10分钟才能完成此操作.

有没有其他方法可以做到这一点?

当我使用Tomcat时,我们曾经.class直接在webapps项目文件夹中更新文件,因此我们不需要重新构建整个应用程序.

java deployment weblogic

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

如何将3位HTML十六进制颜色转换为6位柔性十六进制颜色

我想将来自HTML CSS的三位十六进制颜色转换为Flex的六位十六进制颜色.任何人都可以给我代码将3位十六进制颜色转换为6位数的等效颜色吗?

apache-flex hex colors

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

如何防止XXE攻击

我们对代码进行了安全审核,并提到我们的代码容易受到XML外部实体(XXE)攻击.

说明

XML外部实体攻击受益于XML功能,可在处理时动态构建文档.XML实体允许从给定资源动态包含数据.外部实体允许XML文档包含来自外部URI的数据.除非另外配置,否则外部实体强制XML解析器访问URI指定的资源,例如本地计算机或远程系统上的文件.此行为将应用程序公开给XML外部实体(XXE)攻击,这些攻击可用于执行本地系统的拒绝服务,未经授权访问本地计算机上的文件,扫描远程计算机以及执行远程系统的拒绝服务.

以下XML文档显示了XXE攻击的示例.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///dev/random" >]><foo>&xxe;</foo>
Run Code Online (Sandbox Code Playgroud)

如果XML解析器尝试使用/ dev/random文件的内容替换实体,则此示例可能会使服务器(在UNIX系统上)崩溃.

建议

应该安全地配置XML unmarshaller,以便它不允许外部实体作为传入XML文档的一部分.

要避免XXE注入,请不要使用直接处理XML源的unmarshal方法java.io.File,java.io.Readerjava.io.InputStream.使用安全配置的解析器解析文档,并使用将安全解析器作为XML源的unmarshal方法,如以下示例所示:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setExpandEntityReferences(false);
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(<XML Source>);
Model model = (Model) u.unmarshal(document);
Run Code Online (Sandbox Code Playgroud)

下面的代码是审计发现XXE攻击的地方:

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
System.out.println("outputing to : " + outputLocation);
File outputFile = new File(outputLocation);
StreamResult result = new StreamResult(outputFile);
DOMSource source = new DOMSource(doc);
transformer.transform(source, result); …
Run Code Online (Sandbox Code Playgroud)

java xml transform xml-parsing

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

在Mac上设置和使用Meld作为你的git difftool和mergetool

如何在MacOS上安装Meld,然后在git中将其设置为我的difftool和mergetool?

macos diff merge meld git-config

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

autoNumeric.js在提交表单之前删除格式

我正在使用jQuery插件AutoNumeric,但是当我提交表单时,我无法删除之前字段的格式POST.

我试图使用$('input').autonumeric('destroy')(和其他方法),但它在文本字段上留下格式.

如何POST将未格式化的数据发送到服务器?如何删除格式?初始配置或其他地方是否有属性?

我不想将序列化的表单数据发送到服务器(使用AJAX).我想提交带有未格式化数据的表单,就像普通的HTML操作一样.

javascript jquery jquery-plugins

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