在chrome个应用中输入提交
Enter to submit in chrome app
我创建了一个小应用程序,它应该在按下输入键时执行一个操作。当我在浏览器中打开 html 时,它按我想要的方式工作,但是当我将它作为 chrome 应用程序打开时,它却没有。这是 html:
<input type="text" id='command' onkeydown="keyDown()">
这里是 Javascript:
function keyDown() {
if (event.keyCode == 13) {
var command = document.getElementById('command');
var value = command.value;
if (value === "exit") {
alert('hi');
var mainWindow = chrome.app.window.get('firstInstall');
mainWindow.close();
} else {
document.getElementyId('wrong').className = 'unhidden';
}
}
}
(不要介意 'else{...}' 部分)
在浏览器中,代码会按应有的方式提醒 'hi'。这就是我知道它在浏览器中工作的方式。 chrome 应用程序不工作。
谁能帮忙?谢谢!
我假设您的 HTML 实际上在 ID 属性上有结束引号,例如
<input type="text" id='command' onkeydown="keyDown()">
(如果没有,那会给你带来其他问题)
不过,真正的问题是 Chrome 应用程序不允许 HTML 文件中的 JavaScript 文本。这既适用于内联脚本,也适用于 onkeydown
等事件属性,并且是 Chrome 应用实施的安全措施的一部分,以确保您的应用不会执行不受信任的 JavaScript.
解决这个问题的方法是有一段 JavaScript 将事件侦听器附加到 <input>
标记,如下所示:
document.getElementById('command').addEventListener('keydown', keyDown);
这会将 keyDown()
函数作为侦听器附加到 ID 为 command
的元素上的 onkeydown
事件。
您可以在此处阅读有关 addEventListener
的更多信息:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
有关 Chrome 应用执行的内容安全策略的更多信息,请参见此处:https://developer.chrome.com/apps/contentSecurityPolicy
在keyDown函数中,定义事件对象(关键字)如下:
<input type="text" id='command' onkeydown="keyDown(event)">
通过它,事件对象将作为函数中的局部变量访问:
function keyDown(event){
if(event.keyCode == 13) {
var command = document.getElementById('command');
var value = command.value;
if(value === "exit"){
alert('hi');
var mainWindow = chrome.app.window.get('firstInstall');
mainWindow.close();
} else {
document.getElementById('command').className = 'unhidden';
}
}
}
我创建了一个小应用程序,它应该在按下输入键时执行一个操作。当我在浏览器中打开 html 时,它按我想要的方式工作,但是当我将它作为 chrome 应用程序打开时,它却没有。这是 html:
<input type="text" id='command' onkeydown="keyDown()">
这里是 Javascript:
function keyDown() {
if (event.keyCode == 13) {
var command = document.getElementById('command');
var value = command.value;
if (value === "exit") {
alert('hi');
var mainWindow = chrome.app.window.get('firstInstall');
mainWindow.close();
} else {
document.getElementyId('wrong').className = 'unhidden';
}
}
}
(不要介意 'else{...}' 部分)
在浏览器中,代码会按应有的方式提醒 'hi'。这就是我知道它在浏览器中工作的方式。 chrome 应用程序不工作。 谁能帮忙?谢谢!
我假设您的 HTML 实际上在 ID 属性上有结束引号,例如
<input type="text" id='command' onkeydown="keyDown()">
(如果没有,那会给你带来其他问题)
不过,真正的问题是 Chrome 应用程序不允许 HTML 文件中的 JavaScript 文本。这既适用于内联脚本,也适用于 onkeydown
等事件属性,并且是 Chrome 应用实施的安全措施的一部分,以确保您的应用不会执行不受信任的 JavaScript.
解决这个问题的方法是有一段 JavaScript 将事件侦听器附加到 <input>
标记,如下所示:
document.getElementById('command').addEventListener('keydown', keyDown);
这会将 keyDown()
函数作为侦听器附加到 ID 为 command
的元素上的 onkeydown
事件。
您可以在此处阅读有关 addEventListener
的更多信息:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
有关 Chrome 应用执行的内容安全策略的更多信息,请参见此处:https://developer.chrome.com/apps/contentSecurityPolicy
在keyDown函数中,定义事件对象(关键字)如下:
<input type="text" id='command' onkeydown="keyDown(event)">
通过它,事件对象将作为函数中的局部变量访问:
function keyDown(event){
if(event.keyCode == 13) {
var command = document.getElementById('command');
var value = command.value;
if(value === "exit"){
alert('hi');
var mainWindow = chrome.app.window.get('firstInstall');
mainWindow.close();
} else {
document.getElementById('command').className = 'unhidden';
}
}
}