我正在使用一个我无法访问源代码的在线应用程序,但我能够通过 iframe 在其上注入 javascript,因为我可以在同一个域中创建页面。
这个应用程序有一个提交文件上传和文件输入的表单,认为:
<form>
<!-- lots and lots of inputs -->
<input type="file" name="blah">
</form>
Run Code Online (Sandbox Code Playgroud)
我想使用此表单为这个特定文件提交一个 javascript Blob,而不是来自磁盘的文件,同时不干扰表单的其余部分。我该怎么做呢?
我不确定是否所有浏览器都这样做,但如果我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)
我正在创建一个类型的模板脚本,所以我可以在#{}中放入一个变量名,并将该变量的内容呈现给页面.这是为了原型设计目的.
一个例子是有一个名为"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)
出现此问题.
我在编写一些代码时偶然发现了这一点:
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?
另外,如果这是官方语言功能,这叫什么?