猜測(cè)您在執(zhí)行順序方面遇到了問題,例如在DOM中甚至還不存在<div id="secret">
時(shí),[2]腳本就已經(jīng)執(zhí)行了。您可以在輸出<script src="js/checkout.js"></script>
之前,簡(jiǎn)單地在[1]處添加類似於<script>var secret_var = <?= json_encode($secret_var); ?>;</script>
的內(nèi)容,這樣它就在checkout.js
執(zhí)行之前就是公開的並且已知的,而且已經(jīng)作為變數(shù)存在,無需讀取元素內(nèi)容。或只需使用事件,如window.onload
來執(zhí)行[2]對(duì)元素的讀取。
如果該秘密值發(fā)生變化並且您需要進(jìn)行更新,您可以定期檢查變化,或者在使用之前更好地請(qǐng)求最新的值。
請(qǐng)注意,您輸出到客戶端的任何內(nèi)容都不再是秘密,如果您真的想保護(hù)某個(gè)值,您必須將其僅保留在伺服器端,這在像支付網(wǎng)關(guān)的API金鑰等情況下非常重要。伺服器端意味著將秘密儲(chǔ)存在資料庫或會(huì)話中。然後,每當(dāng)您需要與遠(yuǎn)端服務(wù)互動(dòng)時(shí),只需呼叫PHP腳本(例如ajax)在伺服器端執(zhí)行該任務(wù),這樣您就將秘密的使用分離到僅限伺服器端,然後您無需將其傳遞給客戶端或請(qǐng)求更新。