|
|
@ -17,8 +17,11 @@ function sanitizeUrl(unsafe) { |
|
|
|
/** Remove the most risky characters from a filename string */ |
|
|
|
/** Remove the most risky characters from a filename string */ |
|
|
|
function cleanFilename(unsafe) { |
|
|
|
function cleanFilename(unsafe) { |
|
|
|
return unsafe |
|
|
|
return unsafe |
|
|
|
|
|
|
|
.replace(/::/g, " - ") |
|
|
|
.replace(/[/\\?*|"'<>:]+/g, " ") |
|
|
|
.replace(/[/\\?*|"'<>:]+/g, " ") |
|
|
|
.replace(/\s+/g, " "); |
|
|
|
.replace(/\s+/g, " ") |
|
|
|
|
|
|
|
.replace(/[\._-]$/g, "") |
|
|
|
|
|
|
|
.trim(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
browser.browserAction.onClicked.addListener((tab) => {
|
|
|
|
browser.browserAction.onClicked.addListener((tab) => {
|
|
|
@ -26,8 +29,11 @@ browser.browserAction.onClicked.addListener((tab) => { |
|
|
|
const escapedTitle = escapeHtml(tab.title); |
|
|
|
const escapedTitle = escapeHtml(tab.title); |
|
|
|
const filename = cleanFilename(tab.title);
|
|
|
|
const filename = cleanFilename(tab.title);
|
|
|
|
|
|
|
|
|
|
|
|
const content = new Blob([ |
|
|
|
console.log(`Escaped URL: "${escapedUrl}"`); |
|
|
|
`<!DOCTYPE html>
|
|
|
|
console.log(`Escaped title: "${escapedTitle}"`); |
|
|
|
|
|
|
|
console.log(`Saving as: "${filename}"`);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const html = `<!DOCTYPE html>
|
|
|
|
<html> |
|
|
|
<html> |
|
|
|
<head> |
|
|
|
<head> |
|
|
|
<meta charset="utf-8"> |
|
|
|
<meta charset="utf-8"> |
|
|
@ -49,7 +55,11 @@ browser.browserAction.onClicked.addListener((tab) => { |
|
|
|
Redirecting to: <a href="${escapedUrl}">${escapedUrl}</a> |
|
|
|
Redirecting to: <a href="${escapedUrl}">${escapedUrl}</a> |
|
|
|
</body> |
|
|
|
</body> |
|
|
|
</html> |
|
|
|
</html> |
|
|
|
`]);
|
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const content = new Blob([html]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//console.log(`Generated HTML:\n${html}`);
|
|
|
|
|
|
|
|
|
|
|
|
browser.downloads.download({ |
|
|
|
browser.downloads.download({ |
|
|
|
filename: `${filename}.link.html`, |
|
|
|
filename: `${filename}.link.html`, |
|
|
|