我正在 Chrome 扩展程序中将文件保存到用户的硬盘驱动器,并且我需要有一种方法以编程方式在 Chrome 浏览器中打开该文件。我可以使用 chrome tabs API 创建一个选项卡并设置其 url。问题是文件的文件系统地址。
Chrome 将文件名中的特殊字符切换为其他表达式,例如空格变为 %20。
为了解决这个问题,我想在保存文件名之前对其进行解析,删除会导致这些网址损坏的字符。
我无法找出正确解析文件名的正则表达式。
有两件事可以帮助我:
在 Chrome 中打开网址时导致网址损坏的所有特殊字符的列表。
或者更好的是,来自正则表达式帮助的即时解决方案,我可以将其与 javascript 一起使用 replace method将每个“/”替换为“\”,并将所有非字母或数字(或我刚刚添加的“\”)的其他字符替换为“_”
编辑:
如果我不考虑对字符串的这些更改,我将无法在 chrome 选项卡中打开该文件。例如,下面的代码将不起作用。
chrome.browserAction.onClicked.addListener( function(tab) {
chrome.tabs.create({ url: 'file:///home/user/1057_AngularJS: Developer Guide: Directives.mhtml'}, function(tab) {
});
});
我需要做:
chrome.browserAction.onClicked.addListener( function(tab) {
chrome.tabs.create({ url: 'file:///home/user/1057%5CAngularJS:%20Developer%20Guide:%20Directives.mhtml'}, function(tab) {
});
});`
我想用\s 替换/s,以便文件系统 URL 尽可能与网页 URL 相似,但如果这会导致问题,我可以放弃它。
最佳答案
an instant solution from help with a RegEx that I can use with javascript's replace method to replace every "/" with a "\", and every other character that isn't a letter or a number (or the "\" that I just added) with a "_"
你在这里:
'Hello/你 好/1337'.replace(/\//g, '\\').replace(/[^a-zA-Z0-9\\]/g, '_');
输出:
'Hello\___\1337'
关于javascript - 将文件系统位置解析为可用文件 ://urls in chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942503/