javascript - 将文件系统位置解析为可用文件 ://urls in chrome

标签 javascript regex google-chrome-extension

我正在 Chrome 扩展程序中将文件保存到用户的硬盘驱动器,并且我需要有一种方法以编程方式在 Chrome 浏览器中打开该文件。我可以使用 chrome tabs API 创建一个选项卡并设置其 url。问题是文件的文件系统地址。

Chrome 将文件名中的特殊字符切换为其他表达式,例如空格变为 %20。

为了解决这个问题,我想在保存文件名之前对其进行解析,删除会导致这些网址损坏的字符。

我无法找出正确解析文件名的正则表达式。

有两件事可以帮助我:

  1. 在 Chrome 中打开网址时导致网址损坏的所有特殊字符的列表。

  2. 或者更好的是,来自正则表达式帮助的即时解决方案,我可以将其与 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/

相关文章:

javascript - 如何从表中获取<option>的选定值并将其存储到数组中?

sql - Oracle SQL 获取第 n 个元素正则表达式

python - sed 正则表达式 转 Python re

javascript - 如何: correctly chain AngularJS async calls (AngularJs 1. 7.5)

javascript - 无法使用 contentscript chrome 扩展将 iframe 添加到页面中

java - 在正则表达式中实现负向先行以排除包含特定字符串的代码块

javascript - 获取内容脚本的 'this' 选项卡(未选择,不是事件选项卡)?

javascript - 为什么加载新页面时 Chrome.storage.sync 存储会重置?

javascript - 插入 Span 后将文本节点合并在一起

javascript - Firefox WebExtention API : TypeError: browser. browserAction 未定义