簡體   English   中英

在document.ready中訪問變量

[英]Accessing variable within document.ready

我知道這已經被問過了,但是我的可能有所不同。

我有一個無法控制的HTML頁面,並且對可以使用的JavaScript有所限制。 在此HTML中,我將標出一個變量,在這種情況下為圖像URL數組。

在外部文件中,我嘗試使用此變量。 該變量可以在該文件中的任何地方工作,但是一旦我嘗試在document.ready中顯示它,它就變得不確定。

令我尷尬的是,如果不將其寫入document.write腳本中,我將無法調用外部腳本(它在eBay內,您無法輕松地調用外部腳本)

任何人都可以幫助解決為什么它不起作用或更好的方法嗎?

我可以完全控制JavaScript文件,但是可以訪問HTML,但僅限於我可以在其中編寫的內容,而不會被eBay阻止。 因此,必須使用document.write。

我的代碼是這樣的(剝離版本):

 console.log("Images: " + prodImgs); $(document).ready(function() { console.log("Images inside doc ready: " + prodImgs); }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <!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> 

如果您在eBay上查看源代碼,無論如何,他們已經在主頁上引用了jQuery版本1.7。

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

建議可能存在沖突。 我強烈建議不要使用jquery,除非您必須這樣做,因為無論eBay決定使用其通用代碼庫,您都會一時興起。

使用iframe嵌入內容或功能將使您擁有獨立的代碼,而這些代碼不會與ebay的核心沖突,盡管根據您要實現的目標,您可能會出現跨站點腳本錯誤。

也許兩者兼而有之。 我認為您正在嘗試嵌入幻燈片放映。 為此,將iframe托管在其他位置,然后根據需要保留常規內容和純JavaScript。

請記住要使用閉包並限制全局變量,因為這可能再次與ebays基本代碼沖突。

您是不是要在html頁面中聲明一個變量?

並想訪問.js文件中的變量? 如果是這樣,則在html文件中聲明變量時不要使用var關鍵字。

不要使用這個

var prodImgs=new Array();

使用下面的一個

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

現在您可以訪問.js文件中的prodImgs變量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM