小编use*_*288的帖子

是否可以用 Blob 替换文件输入?

我正在使用一个我无法访问源代码的在线应用程序,但我能够通过 iframe 在其上注入 javascript,因为我可以在同一个域中创建页面。

这个应用程序有一个提交文件上传和文件输入的表单,认为:

<form>
   <!-- lots and lots of inputs -->
   <input type="file" name="blah">
</form>
Run Code Online (Sandbox Code Playgroud)

我想使用此表单为这个特定文件提交一个 javascript Blob,而不是来自磁盘的文件,同时不干扰表单的其余部分。我该怎么做呢?

javascript forms dojo file

6
推荐指数
1
解决办法
5837
查看次数

提供 for...id 时,停止将鼠标悬停在输入标签上以激活输入的悬停样式

我不确定是否所有浏览器都这样做,但如果我for在标签上提供与输入相对应的属性id,这会使将鼠标悬停在标签上触发输入的悬停样式,这在我的情况下是不可取的。有什么方法可以阻止这种行为,同时仍然可以让屏幕阅读器访问表单?

.field label {
  display: block;
  margin: 0 0 0.5em 0;
}
.field input {
  background: white;
  border: 1px solid #999;
  border-radius: 0px;
  color: black;
  display: inline-block;
  padding: 0.5em 0.7em
}
.field input:hover {
  background: #efefff;
  border-color: #333;
}
Run Code Online (Sandbox Code Playgroud)
<div class="field">
  <label for="myInput">Hover over this label:</label>
  <input id="myInput" type="text">
</div>
Run Code Online (Sandbox Code Playgroud)

html css hover wai-aria

4
推荐指数
1
解决办法
2914
查看次数

正则表达式匹配#{}中的名称以用于模板使用

我正在创建一个类型的模板脚本,所以我可以在#{}中放入一个变量名,并将该变量的内容呈现给页面.这是为了原型设计目的.

一个例子是有一个名为"fullname"的变量,它包含文本"John Doe",如果我写这样的html:

<body>
    <p>Hello, #{fullname}! How are you doing?</p>
</body>
Run Code Online (Sandbox Code Playgroud)

它将输出:

<body>
    <p>Hello, John Doe! How are you doing?</p>
</body>
Run Code Online (Sandbox Code Playgroud)

我正在使用等同于/#\ {fullname \}/g的正则表达式,这对我来说非常好用,用以下代码编译它:

 new RegExp('#\{' + varName + '\}','g');
Run Code Online (Sandbox Code Playgroud)

但是,我发现如果将普通数字作为变量名称,表达式会产生意外结果(这些不是javascript变量,因此'1'是有效名称.变量名本身存储在xml中).如果变量名为"1",则正则表达式将替换页面上的所有磅数.

所以/#\ {1 \}/g替换文档中的所有#符号.如果我输入0,它会变得非常时髦,几乎取代了所有东西.2什么都不做.我想知道发生了什么?

编辑 - 我应该注意写出来

/#\{1\}/g
Run Code Online (Sandbox Code Playgroud)

不会引起问题,但是当我使用它时

new RegExp('#\{1\}','g')
Run Code Online (Sandbox Code Playgroud)

出现此问题.

javascript regex templates prototype

2
推荐指数
1
解决办法
1014
查看次数

Javascript 对象内的命名函数?为什么这样做?

我在编写一些代码时偶然发现了这一点:

var obj = {
  myFunc() {
    document.body.innerHTML = 'Hello World!';
  }
};

obj.myFunc();
Run Code Online (Sandbox Code Playgroud)

我想输入的是:

var obj = {
  myFunc: function() { 
    // ...
  }
};
Run Code Online (Sandbox Code Playgroud)

我没有注意到我不小心输入了第一个,直到我意识到我的代码没有在 IE11 中运行。

为什么第一个示例适用于 Chrome/Firefox,而不适用于 IE11?

另外,如果这是官方语言功能,这叫什么?

javascript anonymous-function internet-explorer-11

2
推荐指数
1
解决办法
741
查看次数