我不确定我会以正确的方式问这个问题。我是第一次为功能手机开发,例如运行 Opera Mini 且没有 javascript 的带宽有限的用户。
我有一个带有文本框和可选照片上传器的表单。大多数人不会上传照片。我想实现以下行为:如果用户从手机中选择要在表单中提交的文件,则提交按钮文本从“提交”更改为“带照片提交”。没有javascript这可能吗?
我不确定我会以正确的方式问这个问题。我是第一次为功能手机开发,例如运行 Opera Mini 且没有 javascript 的带宽有限的用户。
我有一个带有文本框和可选照片上传器的表单。大多数人不会上传照片。我想实现以下行为:如果用户从手机中选择要在表单中提交的文件,则提交按钮文本从“提交”更改为“带照片提交”。没有javascript这可能吗?
没有 javascript 答案是否定的。我的回答是否定的,并且使用javascript。
让我解释。
关于 Opera Mini 中的 javascript。
Javascript 未在Opera Mini
. 你可以使用它。例如, Opera Mini 支持XMLHttpRequest
, querySelector/querySeletorAll
。
在其服务器上Opera Mini
有一个javascript 引擎,该引擎在桌面 Opera 上使用,但没有 CSS3 功能,这在浏览器上的渲染成本很高。Presto
关于表单和它的元素。
Opera Mini
仅支持select
元素的更改事件。然后您更改选择Opera Mini
重新渲染页面,方法是使用来自 Opera Mini 服务器的更改选择值重新加载页面。
HTML:
<form action="">
<select>
<option>Change me</option>
<option>Im changed</option>
</select><br>
<input type="file" id="file-control"><br>
<input type="submit" value="Submit" id="submit-control">
</form>
Javascript:
var submitNode = document.getElementById('submit-control');
document.getElementById('file-control').addEventListener('change', function () {
//this will not fire in Opera Mini
if (this.files[0]) {
submitNode.value = 'Submit with photo';
} else {
submitNode.value = 'Submit';
}
});
document.querySelector('select').addEventListener('change', function () {
//this will work in Opera Mini and call after Opera Mini get changed page from Opera Mini server
alert('Select was changed');
});
阅读本文以了解 Opera Mini 的功能: