如果它们尚不存在,我需要通过 java-script 将一些依赖 java-scripts 加载到页面上。这是通过检查是否定义了变量来完成的,如果没有定义,则生成一个脚本元素并将其添加到页面的头部。
它按照我在 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 上。它也适用于铬。在 IE/FF 上,您将导航到带有<body>[object HTMLScriptElement]</body>
正文内容的新页面。
我很困惑为什么它对第二个链接的行为不同,并且正在寻找解决方案。
仅供参考:这需要在 url 中执行的原因是因为我实际上是使用 getURL() 在 AS2 SWF 中调用它,并且我无法更改页面 html 以包含必要的 java 脚本。