您好,我有一个服务器库存。但是我们希望通过包含一个按钮来轻松实现,只需点击它就可以在记事本中打开我们的主要html页面,这样任何没有编码知识的人都可以打开它并添加新服务器或轻松进行任何更改。可能吗?我尝试过很多东西但都失败了。非常感谢帮助。换句话说,我想在我的html页面中创建一个按钮,该按钮应该在记事本中打开我的html页面,而不是在浏览器中打开。
<html>
<head>
<script type="text/javascript">
function runProgram()
{
var shell = new ActiveXObject("WScript.Shell");
var notepad = "C:\Windows\notepad.exe" /e /s /u /wl /wr /maximize";
var file = "file:\\\10.35.114.123\e$\Inventory\Somos\Home1.html";
shell.Run(notepad+file);
}
</script>
</head>
<body>
<a href="javascript:runProgram()">Run program</a>
</body>
</html>
答案 0 :(得分:1)
我的第一反应是说这是不可能的,但是因为在你的代码中你使用本地内部网地址,你可以用这个条件来实现:
您必须使用Internet Explorer,因为IE仅支持ActiveXObject
,因为该对象是专有的MS扩展。
您可以降低本地Intranet区域的安全设置(仅限该区域,Internet安全设置保持不变)。如果您不这样做,则脚本将失败并显示消息“自动化服务器无法创建对象”。
您的用户具有该位置的文件网络访问权限:该目录是共享文件夹,用户具有访问它的相应权限(即他们可以使用Windows资源管理器访问它)。
首先,您必须修改代码,因为您使用的参数对Windows记事本无效,您还必须删除“file://”协议并使用双斜杠网络路径(因为Shell
对象需要C / C ++格式的字符串):
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function runProgram()
{
// only works in Internet Explorer
var shell = new ActiveXObject("WScript.Shell");
//var notepad = "C:\\Windows\\notepad.exe"; // full path optional for notepad
var notepad = "notepad.exe"; // use full path for programs outside Windows folder
var file = "\\\\10.35.114.123\\e$\\Inventory\\Somos\\Home1.html";
shell.Run(notepad+" "+file);
}
</script>
</head>
<body>
<button onclick="runProgram()">Open Notepad</button>
</body>
</html>
然后,您必须修改每台计算机中Internet Explorer的设置:
打开Internet options
,然后在Security
标签中选择Local Intranet
。 重要提示:确保您更改本地Intranet的仅设置。
按Custom level...
按钮找到Initialize scripts and ActiveX controls not marked as safe for scripting
选项,然后选择Prompt
或Enable
(第一个更好)。
在Internet Explorer中打开该页面,底部会显示一条消息,提示默认情况下Intranet设置已关闭,然后按Turn on Intranet settings
。
在此之后,按“打开记事本”按钮将打开包含该文件的记事本(可能带有警告)。