Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跨域加载和执行JS_Javascript - Fatal编程技术网

Javascript 跨域加载和执行JS

Javascript 跨域加载和执行JS,javascript,Javascript,我正在使用javascript加载JS文件: window.onload = function() { var fileref=document.createElement('script') fileref.setAttribute("type","text/javascript") fileref.setAttribute("src", "js/index.js") document.getElementsByTagNa

我正在使用javascript加载JS文件:

window.onload = function() {

         var fileref=document.createElement('script')
         fileref.setAttribute("type","text/javascript")
        fileref.setAttribute("src", "js/index.js")

        document.getElementsByTagName("head")[0].appendChild(fileref)

        }
js文件有以下行

document.write('<a href="#" target="_blank">link</a>');
document.write(“”);
我确信文件已加载(使用alert()测试),但由于某些原因,在我的页面上找不到锚。似乎也没有任何js错误

如果页面中包含相同的行,则可以直接使用

仅供参考:此JS用于跨域安装的插件。我知道这可能有局限性,但希望得到任何指导。
谢谢您

文档。编写
只对与页面解析内联执行的脚本有用。如果稍后调用
document.write
,它会隐式执行
document.open
,这会清除页面内容。考虑到你所描述的,我不知道你为什么看不到

在初始页面加载后添加内容时,使用DOM,例如:

var a = document.createElement('a');
a.innerHTML = "link";
a.href = "#";
a.target = "_blank";

document.body.appendChild(a); // Or, of course, append to something more targeted
就跨域加载脚本而言,这根本没有问题。您所做的一切都很好,不过您可以将其缩短一点,最好不要依赖JavaScript自动插入分号的恐怖:

var fileref = document.createElement('script');
fileref.src = "js/index.js";
document.documentElement.appendChild(fileref);

不需要
type
(默认为JavaScript),并且
src
是一个反射属性(如果您确实想继续并使用它,就如同
type
)。无需将脚本附加到
head
元素,document元素(
html
)中的任何位置都可以。

文档。write
仅适用于与页面解析内联执行的脚本。如果稍后调用
document.write
,它会隐式执行
document.open
,这会清除页面内容。考虑到你所描述的,我不知道你为什么看不到

在初始页面加载后添加内容时,使用DOM,例如:

var a = document.createElement('a');
a.innerHTML = "link";
a.href = "#";
a.target = "_blank";

document.body.appendChild(a); // Or, of course, append to something more targeted
就跨域加载脚本而言,这根本没有问题。您所做的一切都很好,不过您可以将其缩短一点,最好不要依赖JavaScript自动插入分号的恐怖:

var fileref = document.createElement('script');
fileref.src = "js/index.js";
document.documentElement.appendChild(fileref);

不需要
type
(默认为JavaScript),并且
src
是一个反射属性(如果您确实想继续并使用它,就如同
type
)。无需将脚本附加到
head
元素,document元素(
html
)中的任何位置都可以。

document.write不是您想要在这里使用的,因为它更适合内联JS(html文档中的JS)。无法使用
.innerHTML
将超链接写入DOM(请确保要修改innerHTML的元素已加载)


document.write不是您想要在这里使用的,因为它更适合于内联JS(HTML文档中的JS)。无法使用
.innerHTML
将超链接写入DOM(请确保要修改innerHTML的元素已加载)


效果很好!只是快速跟进。如何将样式属性添加到锚点?a、 风格似乎不起作用。再次感谢!明白了。setAttribute(“样式”,“颜色:红色”)。。。etc@salmane:您可以使用
style
属性:
a.style.color=“red”
对于
背景色
,可以使用camelCase名称:
a.style.backgroundColor=“#aaa”。谢谢!我有一个更长的样式属性列表,也许使用setAttribute更有效。除非你另有想法?@salmane:我从未使用过
setAttribute
来设置样式信息,所以我现在不知道跨浏览器的兼容性如何。从表面上看,你希望一切都会好起来。顺便说一句,这是我推荐使用、或这样的好库的原因之一。例如,查看jQuery的函数。非常好用!只是快速跟进。如何将样式属性添加到锚点?a、 风格似乎不起作用。再次感谢!明白了。setAttribute(“样式”,“颜色:红色”)。。。etc@salmane:您可以使用
style
属性:
a.style.color=“red”
对于
背景色
,可以使用camelCase名称:
a.style.backgroundColor=“#aaa”。谢谢!我有一个更长的样式属性列表,也许使用setAttribute更有效。除非你另有想法?@salmane:我从未使用过
setAttribute
来设置样式信息,所以我现在不知道跨浏览器的兼容性如何。从表面上看,你希望一切都会好起来。顺便说一句,这是我推荐使用、或这样的好库的原因之一。例如,查看jQuery的函数。