当删除头标记时,脚本仅在某些浏览器中运行

时间:2013-08-21 15:07:33

标签: javascript jquery html cross-browser tumblr

我正在使用tumblr主题,其结构如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
        <style>
        </style>
        <body>
        </body>
    </html>

我认为没有头部标签很奇怪,但它工作正常;因为当您运行该站点时,它会自动放置头标记。但是,因为我正在使用插件,所以我自己添加了head标签,以便让我更好地控制,因为有些人要求我将它放在<head>中。这在chrome和safari中运行良好,但它在firefox和IE中禁用了我的一个脚本:

$(document).ready(function () {
       var speed = 25,
        timer;
    $("#hoverscroll").hover(function () {
        $(this).css({cursor: 'none'});
        $(this).css({opacity: '0'});
        var div = $('body');
        (function startscrolling(){
            timer = setTimeout(function () {
                var pos = div.scrollTop();
                div.scrollTop(pos + 1);
                startscrolling();
            }, speed);
        })();
    },

    function () {
        $("#hoverscroll").css({opacity: '1'});
        clearTimeout(timer);
        speed = 25;
    })
    .click(function(){
         speed = 1;
    });

});

这是一个简单的脚本,当元素悬停时它会滚动页面。

我在这两个演示站点中重现了这个问题:

http://testmycode.tumblr.com/此网站有标题,滚动为chrome,不会在Firefox中滚动。

http://testmycode2.tumblr.com/此网站有标题标记,效果很好,可以在所有浏览器中滚动。

2 个答案:

答案 0 :(得分:0)

您可以使用JQuery(如下面的

)将代码添加到头标记中
$("head").append("<script src=\"mypluginscript.js\"></script>");

这将允许您添加任何新代码,而无需编写头标记

an example!

答案 1 :(得分:0)

  

'但是,因为我使用的是插件,所以我自己添加了头标签   我更好地控制'

你的意思是什么?

大多数时候都有替代解决方案。


正确的html需要html标记头标记和正文标记

在head标签内放置meta,script和style标签

最小结构

<html>
 <head>
 </head>
 <body>
 </body>
</html>

否则它不是一个html文件。

差不多十年html5推出......

,因为它类似于它适用于所有浏览器的基本结构。

<!doctype html> // html5
<html lang="en"> // language set to english
<head>
<meta charset="utf-8"> // can decode almost al charachters éçàò..
<style></style>
<script></script>
<title>Title</title>
</head>
<body>
</body>
</html>

现在正在调整您的代码。

<script>

进入头部(或在身体末端[或在每个元素之后])

如果你把代码放在脑袋里......

处理身体内的元素

你需要添加一个window.onload // DOMContentLoaded

否则你无法访问dom元素。


现在查看Chrome中的代码,错误从html标记开始..

为什么html有一个webkit动画?

然后你谈论doctype标签而不是head标签。 因此,如果您告诉我们您需要的原因,我们可能会找到解决方案。