firefox为了浏览器安全性,不能获得上传文件绝对路径。。document.getElementById('file').value获得的是文件名
在ie里获得的却是绝对路径
- <!doctype html>
- <script>
- function readFile(fileBrowser) {
- if (navigator.userAgent.indexOf("MSIE") != -1) {
- return getFilePath(fileBrowser);
- } else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1) {
- return getFilePathWithFF(fileBrowser);
- } else {
- return;
- }
- }
- function getFilePath(fileBrowser) {
- if (navigator.userAgent.indexOf("MSIE") != -1) {
- fileBrowser.select();
- return document.selection.createRange().text;
- } else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1)
- return this.getFilePathWithFF(fileBrowser);
- else alert("Not IE or Firefox (userAgent=" + navigator.userAgent + ")");
- };
- function getFilePathWithFF(fileBrowser) {
- try {
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- } catch(e) {
- alert('由于浏览器安全问题 请按照以下设置 [1] 地址栏输入 "about:config" ;[2] 右键 新建 -> 布尔值 ; [3] 输入 "signed.applets.codebase_principal_support" (忽略引号).');
- return;
- }
- var fileName = fileBrowser.value;
- alert(fileName );
- var file = Components.classes["@mozilla.org/file /local;1"].createInstance(Components.interfaces.nsILocalFile);
- try { // Back slashes for windows
- file.initWithPath(fileName.replace(/\//g, "\\\\"));
- } catch(e) {
- if (e.result != Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH)
- throw e;
- alert("File '" + fileName + "'cannot be loaded: relative paths
- are not allowed. Please provide an absolute path to this file.");
- return;
- }
- alert(file.path);
- return file.path;
- }
- </script>
- <html>
- <head>
- <meta charset="gbk">
- </head>
- <body>
- <input type="file" id="file"></input>
- <input type="button" οnclick="readFile(document.getElementById('file'))" value="上传"></input>
- </body>
- </html>
<!doctype html>
<script>
function readFile(fileBrowser) {
if (navigator.userAgent.indexOf("MSIE") != -1) {
return getFilePath(fileBrowser);
} else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1) {
return getFilePathWithFF(fileBrowser);
} else {
return;
}
}
function getFilePath(fileBrowser) {
if (navigator.userAgent.indexOf("MSIE") != -1) {
fileBrowser.select();
return document.selection.createRange().text;
} else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1)
return this.getFilePathWithFF(fileBrowser);
else alert("Not IE or Firefox (userAgent=" + navigator.userAgent + ")");
};
function getFilePathWithFF(fileBrowser) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch(e) {
alert('由于浏览器安全问题 请按照以下设置 [1] 地址栏输入 "about:config" ;[2] 右键 新建 -> 布尔值 ; [3] 输入 "signed.applets.codebase_principal_support" (忽略引号).');
return;
}
var fileName = fileBrowser.value;
alert(fileName );
var file = Components.classes["@mozilla.org/file /local;1"].createInstance(Components.interfaces.nsILocalFile);
try { // Back slashes for windows
file.initWithPath(fileName.replace(/\//g, "\\\\"));
} catch(e) {
if (e.result != Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH)
throw e;
alert("File '" + fileName + "'cannot be loaded: relative paths
are not allowed. Please provide an absolute path to this file.");
return;
}
alert(file.path);
return file.path;
}
</script>
<html>
<head>
<meta charset="gbk">
</head>
<body>
<input type="file" id="file"></input>
<input type="button" οnclick="readFile(document.getElementById('file'))" value="上传"></input>
</body>
</html>
document.selection只有IE支持,
window.getSelection()也只有FireFox和Safari支持,都不是标准语法。
注解
火狐用window.getSelection().toString()可以获取到选中的文本,但是(input标签的)文本框无效。(所以上面不能用这种方法获得值)
但可以在触发input相应事件时,访问document.activeElement获得活动的组件,再用value获得值。。。(type=file时无效)
ie用MyInput.document.selection.createRange().text可以获取到文本框的文本
之前必须调用myInput.select()
上面的一些方法和属性不太标准的用法、、像selection之类的、。。
下面简化下
- function readFile(fileBrowser) {
- if (navigator.userAgent.indexOf("MSIE") != -1) {
- return getFilePath(fileBrowser);
- } else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1) {
- return getFilePathWithFF(fileBrowser);
- } else {
- return;
- }
- }
- function getFilePath(fileBrowser) {
- alert("ie");
- alert(fileBrowser.value);
- }
- function getFilePathWithFF(fileBrowser) {
- try {
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- } catch(e) {
- alert('由于浏览器安全问题 请按照以下设置 [1] 地址栏输入 "about:config" ; [2] 右键 新建 -> 布尔值 ; [3] 输入 "signed.applets.codebase_principal_support" (忽略引号).');
- return;
- }
- var fileName = fileBrowser.value;
- alert("firefox");
- alert( fileName);
- }