我有一个简单的HTML文件,其中包含了jQuery。在Safari中它可以工作,但在Firefox中它不能加载。当我使用$时,我在firefox中收到以下错误消息:
ReferenceError:$未定义
// jQuery Shortcuts
const search_bar = $('#search_bar');
const search_button = $('#search_button');
const search_query = $('[name=search_query]')[0];
const links = $('#links');
const random = $('#random_button');
// Animations
// activate search on click
search_button.click(show_and_hide);
// reset screen on random click
random.click(hide_and_show);
// activate results window on keypress
search_bar.keypress(function(){
random.slideUp(1000, 'linear');
links.slideDown(1000, 'linear');
});
// if search bar is empty (from deleting) revert back to search icon
search_bar.keyup(function(){
if(search_bar.val().length === 0){
links.slideUp(1000, 'linear');
hide_and_show();
}
});
// function to show the random button and search bar while hiding search icon
function show_and_hide(){
search_button.fadeOut(1000, 'linear');
random.slideDown(1000, 'linear');
search_bar.slideDown(1000, 'linear');
search_bar.select();
}
// hide search bar and display search button
function hide_and_show(){
search_bar.slideUp(1000, 'linear');
random.slideUp(1000, 'linear');
search_button.slideDown(1000, 'linear');
}
// Link generator function for results window
function link_generator(data){
var i = 0,
title = data[1],
description = data[2],
link = data[3];
for(i; i < data[3].length; i++){
var list_link = '<a href="'+link[i]+'">'+title[i]+'</a><br/>';
list_description = list_link+description[i]+'<hr>';
links.append(list_description);
}
}
// Wiki Auto-complete
search_bar.autocomplete({
source: function(query, result) {
$.ajax({
url: "https://en.wikipedia.org/w/api.php",
dataType: "jsonp",
data: {
'action': "opensearch",
'format': "json",
'search': query.term
},
success: function (data) {
links.empty();
link_generator(data);
}
});
}
});
答案 0 :(得分:1)
很可能完整性属性值与脚本的哈希值不匹配。 如果您收到任何错误,请查看控制台窗口吗?
我已经找到了根本原因。基于caniuse网站,safari NOT 实现此功能,因此您没有在safari上看到问题。 IE和Edge的情况相同。请看下面:
答案 1 :(得分:0)
我尝试了这样的代码并且有效
<!doctype html>
<html>
<head>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js" ></script>
<script>
if (window.jQuery) {
alert("loaded");
} else {
alert("not loaded");
}
</script>
</body>
</html>
答案 2 :(得分:0)
我今天遇到了同样的问题,多功能无法在Firefox和Safari中运行,我查了一下,发现其中一个不在声明之外:
jQuery(document).ready(function(){
//your code
});
我把功能放回去了,一切都运转良好。因此,请尝试在脚本中包含(document).ready函数。 似乎Chrome在识别和执行jQuery方面是“最聪明的”。