← back to Sku Check Skill
ui: add rel=noopener noreferrer to all target=_blank anchors
46a693f9b3ccff924e204f88da5f246a4a4b96c8 · 2026-05-19 18:34:24 -0700 · Steve Abrams
Files touched
Diff
commit 46a693f9b3ccff924e204f88da5f246a4a4b96c8
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Tue May 19 18:34:24 2026 -0700
ui: add rel=noopener noreferrer to all target=_blank anchors
---
public/index.html | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/public/index.html b/public/index.html
index a31099f..b662266 100644
--- a/public/index.html
+++ b/public/index.html
@@ -318,9 +318,9 @@ function xfetch(url,opts){return new Promise(function(resolve,reject){var x=new
<tr id="row-${r.dw_sku}">
<td>
<strong style="font-size:14px">${r.dw_sku_dash || r.dw_sku}</strong>
- ${r.shopify_handle ? `<br><a href="https://www.designerwallcoverings.com/products/${r.shopify_handle}" target="_blank" style="font-size:11px">View on site</a>` : ''}
- ${r.shopify_product_id ? `<br><a href="https://admin.shopify.com/store/designer-laboratory-sandbox/products/${r.shopify_product_id}" target="_blank" style="font-size:11px;color:#d29922">Admin</a>` : ''}
- ${r.vendor_url ? `<br><a href="${r.vendor_url}" target="_blank" style="font-size:11px;color:#0891b2" title="View ${r.mfr_sku} on manufacturer website">MFR Site</a>` : ''}
+ ${r.shopify_handle ? `<br><a href="https://www.designerwallcoverings.com/products/${r.shopify_handle}" target="_blank" rel="noopener noreferrer" style="font-size:11px">View on site</a>` : ''}
+ ${r.shopify_product_id ? `<br><a href="https://admin.shopify.com/store/designer-laboratory-sandbox/products/${r.shopify_product_id}" target="_blank" rel="noopener noreferrer" style="font-size:11px;color:#d29922">Admin</a>` : ''}
+ ${r.vendor_url ? `<br><a href="${r.vendor_url}" target="_blank" rel="noopener noreferrer" style="font-size:11px;color:#0891b2" title="View ${r.mfr_sku} on manufacturer website">MFR Site</a>` : ''}
</td>
<td>
<span style="font-weight:600">${r.mfr_sku || '-'}</span>
@@ -414,7 +414,7 @@ function xfetch(url,opts){return new Promise(function(resolve,reject){var x=new
].filter(([,v]) => v);
let html = `<div class="detail-section"><h4>Specs from Catalog</h4>`;
fields.forEach(([k,v]) => { html += `<div class="field"><span class="fk">${k}</span><span class="fv">${v}</span></div>`; });
- if (s.productUrl) html += `<div style="margin-top:8px"><a href="${s.productUrl}" target="_blank" style="font-size:11px">View on vendor site</a></div>`;
+ if (s.productUrl) html += `<div style="margin-top:8px"><a href="${s.productUrl}" target="_blank" rel="noopener noreferrer" style="font-size:11px">View on vendor site</a></div>`;
if (s.imageUrl) html += `<div style="margin-top:8px"><img src="${s.imageUrl}" style="max-width:120px;border-radius:4px;border:1px solid #30363d" /></div>`;
html += `</div>`;
return html;
@@ -423,9 +423,9 @@ function xfetch(url,opts){return new Promise(function(resolve,reject){var x=new
function renderImagesResult(data) {
if (!data.images || data.images.length === 0) return `<div style="color:#8b949e;padding:8px">${data.message || 'No images found'}</div>`;
let html = `<div class="detail-section"><h4>Images (${data.images.length})</h4><div class="detail-images">`;
- data.images.forEach(url => { html += `<a href="${url}" target="_blank"><img src="${url}" /></a>`; });
+ data.images.forEach(url => { html += `<a href="${url}" target="_blank" rel="noopener noreferrer"><img src="${url}" /></a>`; });
html += '</div>';
- if (data.productUrl) html += `<div style="margin-top:8px"><a href="${data.productUrl}" target="_blank" style="font-size:11px">Vendor product page</a></div>`;
+ if (data.productUrl) html += `<div style="margin-top:8px"><a href="${data.productUrl}" target="_blank" rel="noopener noreferrer" style="font-size:11px">Vendor product page</a></div>`;
html += '</div>';
return html;
}
← 1f37fd0 server: 404-guard for .bak/.pre-/.orig/.swp paths before sta
·
back to Sku Check Skill
·
security: strip hardcoded dw_admin DSN password -> env-first 008f261 →