進入JavaScript時的在瀏覽器控制檯窗口:的Javascript需要在瀏覽器控制檯
1)
下面的代碼工作:
alert('hi');
2)
以下不:
(function() {
var scr = document.createElement('script');
scr.src = 'http://www.myrandomwebsite.com/myjs.js';
document.head.appendChild(scr);
myfunc();
})()
其中myjs.js文件夾包含:
var myfunc = function(){alert('hi')};
解釋2) 的代碼在這種情況下輸入的代碼段確實會導致下面的代碼來顯示在報頭的末尾標籤中的源代碼:
<script src="http://www.myrandomwebsite.com/myjs.js"></script>
但功能MYFUNC沒有被認可,因爲我得到了以下錯誤消息:
VM132:5 Uncaught ReferenceError: myfunc is not defined
這使我相信,作爲一種安全措施,瀏覽器不運行在頁面加載後編輯JavaScript代碼, 或類似的規定。
問題:有沒有這方面的解決方法?它是否是在大多數編程語言中像require('...');
一樣的函數。 但它不能是通過安裝任何特殊的擴展,只是在飛行中的工作。
我走過很多地方,在不同的計算機上工作,並希望能夠使用我的一些代碼,而不需要隨身攜帶USB。
________________________ UPDATE ________________________
解決方案@Jared史密斯提出了完美。現在有一個不起作用的例子(我明白爲什麼)。當一個網站有一個內容安全,政策是不允許從其它網址或任何連接加載腳本加載:
例如:
Content-Security-Policy: script-src 'self' https://apis.google.com
Content-Security-Policy: connect-src 'self' https://apis.google.com
這非常有意義。我的情況是我有我自己的代碼,但我希望能夠將此代碼存儲在另一個站點上,並在旅行中或在其他計算機上使用它,而無需從USB中提取它們。
現在我明白網站的白名單出於安全原因加載了哪些源腳本,但我不明白爲什麼在開發者控制檯完成時沒有例外。CSP主要用於防止XSS攻擊等,但控制檯中的某人故意使用代碼和測試功能。
問題:控制檯中是否有某些功能可以允許從其他站點加載腳本?我一直在擺弄源腳本代碼段,但一直未能找到選項。或者可能還有其他一些無關的工作?
您需要等待腳本標記的'onload'事件。 –
@JaredSmith怎麼樣?如果我進入頁面並完全加載,然後打開檢查元素,請轉到控制檯,即我想要執行代碼時。一切都已經加載,但仍然發生錯誤。 – Webeng
'src.onload = function(){myfunc(); };'。瀏覽器必須獲取腳本src,這是一個異步操作,您必須使用回調。 –