我需要通過java腳本將一些依賴性java腳本加載到頁面上(如果它們尚不存在)。這是通過檢查變量是否被定義來完成的,如果它們沒有生成腳本元素並將其添加到頁面的頭部。如何在錨點href中使用javascript並且不從頁面導航
它以我期望的方式在Chrome中運行。當我直接在IE/Firefox的href中調用代碼時,它似乎打開一個新窗口。奇怪的是,當我在href中間接調用它時,它的工作方式是我期望的。這裏的展示行爲(與裝載jQuery的)修剪例如
<!DOCTYPE html>
<html>
<head>
<script>
function test(){
if (typeof jQuery == 'undefined') {
var js = document.createElement('script');
js.setAttribute('type','text/javascript');
js.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js');
var head= document.getElementsByTagName('head')[0];
head.appendChild(js);
}
}
</script>
</head>
<body>
<a href="javascript: if (typeof jQuery == 'undefined') {var js = document.createElement('script');js.setAttribute('type','text/javascript');js.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js');var head= document.getElementsByTagName('head')[0];head.appendChild(js);}"> navigates to new page </a>
|
<a href="javascript: test();">executes on page</a>
</body>
</html>
如果您查看此頁面,你會發現第二個鏈接實際上載入jQuery和把它放在了DOM。它也適用於Chrome。在IE/FF上,您將導航到<body>[object HTMLScriptElement]</body>
作爲正文內容的新頁面。
我很困惑,爲什麼它對第二個鏈接的行爲不同,並且正在尋找解決方案。
供參考:這需要在url中執行的原因是因爲我實際上使用getURL()在AS2 SWF中調用它,並且我無法更改頁面html以包含必需的java腳本。
這確實阻止它進入下一頁,它回答了問題(儘管它仍然沒有將腳本添加到FF和IE的頭上) –
謝謝@MikeMcFarland接受我的回答,儘管事實並非如此lve根本問題 – MaxiWheat
這在ie9中不起作用。最後導航到一個頁面上有一個「假」字樣的頁面。 – stu