作为良好的做法,我通常会扫描已经提出的问题以找到解决问题的方法,但我已经用尽所有搜索。
简而言之:
我从头开始开发我的网站,然后转换为wordpress主题。在桌面上一切正常,调整大小的浏览器显示网站响应和调整风格以便移动友好(也在移动设备上测试,因此风格没有任何问题)。我没有在控制台上找到任何错误,不是在桌面上也不是在移动设备上。
然而, none 的javascript函数可以在我拥有的以下设备上运行并测试我的网站:
有趣的是,在我的三星Galaxy上,我下载了几个其他浏览器只是为了检查:
我上传了我的网站进行测试,您可以在http://efcotest.web-merchant.co.nz/
看到它是的,我知道在移动视图上播放幻灯片不是很好的做法,但我打算删除它,只是当我开始测试基本功能(主要是网站菜单)时,我发现javascript无法正常工作以上简要说明。
有人帮忙吗?
编辑:好的,所以我使用jsconsole.com远程调试,发现我的javascript函数被调用时出现未解决的引用错误。我在Galaxy Note的本机浏览器和Ipad上都检查过这个。相同的参考错误。
这是我的怀疑,现在确认我的脚本文件未在这些特定设备广告浏览器上加载。
我真的可以在这里使用一些帮助,因为我完全无法理解脚本无法加载的原因,我已根据wordpress要求正确注册并排列了functions.php中的脚本,所以我看不清楚是什么问题是。帮助任何人?
注意:我应该根据jsconsole添加它们,例如 - >
未捕获的ReferenceError:未定义ShowMobileMenu
嗨Esha,谢谢你的回复。这是我的functions.php,因为你会看到我正在编写我的脚本:
<?php
wp_enqueue_style( 'EFCOstyle', get_stylesheet_uri() );
wp_enqueue_scripts('jquery');
wp_register_script( 'Gf', 'http://efcotest.web-merchant.co.nz/wp-content/themes/EFCO/js/Generalfunctions.js', array('jquery'), false, false);
wp_enqueue_scripts('Gf');
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
?>
我刚刚在Chrome桌面浏览器上查看了它,是的,又有完全相同的问题(IIRC Android原生浏览器也基于chrome?)
更新:我已设法通过修改我的functions.php来解决Chrome(桌面版)中的错误:
<?php
function AddStyle() {
wp_enqueue_style( 'style', get_stylesheet_uri() );
}
function Addscripts() {
wp_register_script('jquery310', 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js');
wp_register_script('Generalfunctions', get_template_directory_uri() . '/js/Generalfunctions.js', array( 'jquery' ));
wp_enqueue_script('jquery310');
wp_enqueue_script('Generalfunctions');
}
add_action( 'wp_enqueue_scripts', 'AddStyle' );
add_action( 'wp_enqueue_scripts', 'Addscripts' );
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
?>
然而问题仍然存在于移动设备上,我完全无法理解为什么无法引用脚本文件。
答案 0 :(得分:0)
您在上面分享的链接的页面源代码如下。它需要函数ShowMobileMenu。但是没有定义了这个函数的脚本文件。这就是你引用错误的原因。
实际上我在桌面Chrome浏览器上有引用错误。请检查您是否将JS文件排入其中以定义这些函数。你的主题只排队CSS文件没有JS文件。
<div class = "MobileMenuWrap"><!--Mobile Menu Strip Wrap-->
<div class = "MobileMenuIconWrap" onclick = "ShowMobileMenu()">
<label for="MobileMenuIcon" id = "MobileMenuIcon_label">Site Menu</label>
<div id = "Menu_Icon" class = "MobileMenuIcon">
</div>
</div>
答案 1 :(得分:0)
好吧所以经过几个小时的反复试验,我终于设法跟踪并追踪问题并对其进行了调试 - 很好的解决问题。
问题非常简单:语法无效。当我幸运地获得脑波来从我的html中召唤我的脚本时,这一点就曝光了:
jQuery.getScript("http://efcotest.web-merchant.co.nz/wp-content/themes/efco/js/generalfunctions.js", function(){
alert("script loaded if you see this message, executed? Look around, observe!");
});
正如我所料,该消息从未在我的Android本机浏览器上弹出,因此我继续使用jsconsole远程调试。幸运的是,上面的方法导致jsconsole返回一个更有意义的错误,这次实际指定了它出现的行:
.../js/generalfunctions.js?ver=4.7.5:736
Uncaught SyntaxError: Unexpected token >
原来我正在这样做:
if((Target => 0)...
而不是:
if((Target >= 0)...
但即使上面的正确语法也不起作用,即脚本无法在麻烦的浏览器上加载,所以我尝试了这样做:
if(((Target == 0) || (Target > 0)) && (Target ==(MaxSlides-1) || (Target < (MaxSlides-1))))
这确实有效。对于大于等于运算符的部分浏览器,这可能只是一个解释问题,因为在其他浏览器上进行的测试很明显,即使使用=&gt;也没有返回任何错误。用法(我知道不正确)。
无论如何,现在有效。希望这篇文章能有所帮助 - 如果有人遇到类似的问题。因为这个原因我记录了进度。