Wordpress网站:尽管链接正确

时间:2017-05-20 05:00:05

标签: javascript wordpress mobile web

作为良好的做法,我通常会扫描已经提出的问题以找到解决问题的方法,但我已经用尽所有搜索。

简而言之:

我从头开始开发我的网站,然后转换为wordpress主题。在桌面上一切正常,调整大小的浏览器显示网站响应和调整风格以便移动友好(也在移动设备上测试,因此风格没有任何问题)。我没有在控制台上找到任何错误,不是在桌面上也不是在移动设备上。

然而, none 的javascript函数可以在我拥有的以下设备上运行并测试我的网站:

  • 三星Galaxy Note 3:原生浏览器
  • Ipad(iOS 8.3):在浏览器上测试过:Safari和Atomic Lite

有趣的是,在我的三星Galaxy上,我下载了几个其他浏览器只是为了检查:

  • Adblock浏览器
  • DebugBrowser(这有一个javascript控制台,我检查了错误:没有)。

我上传了我的网站进行测试,您可以在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' );

?>

然而问题仍然存在于移动设备上,我完全无法理解为什么无法引用脚本文件。

2 个答案:

答案 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;也没有返回任何错误。用法(我知道不正确)。

无论如何,现在有效。希望这篇文章能有所帮助 - 如果有人遇到类似的问题。因为这个原因我记录了进度。