我有一個jQuery腳本,我添加了一個ASYNC屬性。它似乎可以在Firefox中正常工作,但在Chrome和IE中間歇性失敗。異步Javascript導致JS錯誤函數不存在
PHP加載添加異步attrib。這工作得很好:
function add_async_attribute($tag, $handle) {
if (substr($handle,0,3) !== 'jch')
return $tag;
return str_replace(' src', ' async="async" src', $tag);
}
add_filter('script_loader_tag', 'add_async_attribute', 10, 2);
導致一個問題,異步ATTRIB JS文件:
jQuery(document).ready(function($) {
jQuery('.home #intro_reel').jchTextReel({fadeTime: 16000});
});
jQuery.fn.extend({
jchTextReel: function(options) {
var defaults = {
fadeTime: 10000,
mouseOverColor : '#000000',
mouseOutColor : '#ffffff'
}
var options = jQuery.extend(defaults, options);
return this.each(function() {
var o = options;
....etc....
Chrome會顯示一個錯誤 'jchTextReel不是一個函數'。
同樣,刪除ASYNC attrib使腳本再次正常工作。或者,如果我按F5重新加載,腳本似乎工作。
爲什麼?我該如何解決?
我在我的代碼示例中犯了一個嚴重的錯誤。請參閱更正後的版本。它應該讀取'異步=「異步」'對不起。 – jchwebdev
我試過你的解決方案,沒有快樂。不過,將返回字符串更改爲「延遲」仍然有效。 – jchwebdev
沒關係。根據我[收集](https://css-tricks.com/async-attribute-scripts-bottom/),最好爲第三方腳本保留「async」的使用,因爲依賴性的可能性增加的問題。所以我會放棄它,如果這些腳本已經在腳註中(這從發佈的代碼中不清楚),延遲也是不必要的。 –