在document.ready中访问变量

时间:2015-11-09 13:28:08

标签: javascript jquery variables ebay

我知道之前有人问过,但我的情况可能会有点不同......

我有一个我无法控制的HTML页面,并且对可以使用的javascript有一个限制。在这个HTML中,我将decalare变量,在这种情况下是一个图像URLS数组。

在外部文件中,我试图使用此变量。该变量适用于此文件中的任何位置,但只要我尝试在document.ready中显示它就会变为未定义..

让它变得尴尬的是,我无法在没有将其写入document.write脚本的情况下调用外部脚本(它在eBay中并且您无法轻松调用外部脚本)

任何人都可以帮助解决它为什么不起作用,或者更好的方法吗?

我可以完全控制js文件,但是我可以访问HTML,但仅限于我可以在那里写的内容,而没有eBay阻止它。因此,必须使用document.write。

我的代码是这样的(剥离版本)

HTML PAGE:

<!DOCTYPE html> 
<head>
<meta http-equiv="content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript"> 
    var prodImgs=new Array();  
    prodImgs[0]="http://example.com/Media/images/testImages/1.jpg";
    prodImgs[1]="http://example.com/Media/images/testImages/1.jpg";
    prodImgs[2]="http://example.com/Media/images/testImages/1.jpg";
    prodImgs[3]="http://example.com/Media/images/testImages/1.jpg"; 
    prodImgs = prodImgs.filter(function(v){return v!==''});

    document.write ("<"+"script src='http://example.com/Scripts/jquery-1.8.1.min.js' type='text/javascript' "+"></"+"script><"+"script src='http://example.com/Scripts/myscripts.js' type='text/javascript' "+"></"+"script>");
</script>
</head>
<body>  
........

JS文件:

console.log("Images: "+prodImgs);

$(document).ready(function(){   
    console.log("Images inside doc ready: "+prodImgs);
});

2 个答案:

答案 0 :(得分:0)

如果您在易趣上查看来源,他们已经在主页上引用了jquery版本1.7。

http://ir.ebaystatic.com/rs/v/jmalt0eyvq1k1k2ezqntv51k5mo.js

建议可能存在冲突。我强烈建议不要使用jquery,除非你必须因为你将随心所欲地决定用它们的通用代码库做什么。

使用iframe嵌入内容或功能将允许您拥有不会与ebay核心冲突的独立代码,尽管您可能会遇到跨网站脚本错误,具体取决于您要实现的目标。

也许是两者的结合。我假设您正在尝试嵌入幻灯片。在其他地方托管iframe,然后在需要时保留一般内容和纯JavaScript。

请记住使用闭包并限制全局变量,这可能会与ebays基本代码冲突。

答案 1 :(得分:-1)

你的意思是你想在你的html页面中声明一个变量。

并想在.js文件中访问该变量?如果是这样,那么在声明变量时在html文件中不要使用var关键字。

不要使用此

var prodImgs=new Array();

使用以下

prodImgs=new Array();  -- use this.

现在您可以访问.js文件中的prodImgs变量