首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 跨頁面建立元素:透過 URL 參數或 localStorage 傳遞指令

     編輯:程式設計綜合問答

核心限制

瀏覽器同源策略禁止直接操作不同頁面的 DOM。a.html 無法直接在 b.html 建立 <div>。

方案一:URL 參數傳遞 (最簡單)

// a.html 按鈕點擊
document.getElementById('btn').onclick = function() {
    location.href = 'b.html?createDiv=1'; // 攜帶指令參數
};

// b.html 載入時檢查
window.onload = function() {
    const params = new URLSearchParams(location.search);
    if (params.get('createDiv') === '1') {
        const div = document.createElement('div');
        div.textContent = '從 a.html 建立';
        document.body.appendChild(div);
    }
};

方案二:localStorage 持久化 (支援多頁面狀態)

// a.html
localStorage.setItem('action', 'createDiv');
location.href = 'b.html';

// b.html
window.addEventListener('storage', function(e) { // 同源不同頁面同步
    if (e.key === 'action' && e.newValue === 'createDiv') {
        createDiv();
    }
});
// 或直接 onload 讀取
if (localStorage.getItem('action') === 'createDiv') {
    createDiv();
    localStorage.removeItem('action'); // 執行一次清除
}

方案三:共享 Worker / Broadcast Channel (進階)

// 適用於多標籤頁即時同步
const channel = new BroadcastChannel('app-channel');
channel.postMessage({type: 'CREATE_DIV'});

// 接收端
channel.onmessage = (e) => {
    if (e.data.type === 'CREATE_DIV') createDiv();
};

選擇建議

場景推薦方案
單次跳轉帶參數URLSearchParams
需持久化/多頁面共享狀態localStorage
多標籤頁即時通訊BroadcastChannel

安全提醒

  • 嚴格驗證參數內容,防止 XSS 注入。
  • 敏感操作需後端驗證權限,前端僅作 UI 提示。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved