0

CSS Sprites 在页面的 HTML 中工作,但不是在 Javascript 中?

我正在尝试安装http://www.spyka.net/scripts/javascript/easy-social-bookmarks并添加 CSS Sprites 以最小化服务器调用。

我创建了这样的样式表:

<style type="text/css">
<!--
.i_blinklist
{
width:21px;
height:21px;
background-repeat: no-repeat;
background-image: url(img_socialsprites.jpg);
background-position: 0 0;
}
.i_blogmarks
//-->
</style>

此代码在页面的 HTML 中工作,如下所示:

<div class=i_blinklist></div>

当我像这样将它添加到javascript时,它不起作用:

sites[0] = new Array('http://blinklist.com/index.php?Action=Blink/addblink.php&Url={url}', 'Blinklist',  '<div class=i_blinklist></div>');

这是脚本的主要工作方式,也可能会影响它:

function swgbookmarks()
{
    for(i = 0; i < sites.length; i++)
    {
        var g = sites[i];
        var u = g[0];
        u = u.replace('{url}', escape(window.location.href));
        u = u.replace('{title}', escape(window.document.title));
        var img = (imagepath == '0') ? '' : '<img src="'+g[2]+'" alt="'+g[1]+'" />&nbsp; ';
        var k = '<a href="'+u+'">'+img+g[1]+'</a>&nbsp;';
        window.document.write(html_before+k+html_after);                
    }
}

非常感谢任何想法或帮助。

谢谢你。

更新:

我一直在玩这个,终于让它工作了:o)

这是我所做的更改。

社交书签和图片 JS 代码:

sites[0] = new Array('http://blinklist.com/index.php?Action=Blink/addblink.php&Url={url}', 'Blinklist',  'socialsprite social blinklist');

这是脚本基础的 JS 代码:

function swgbookmarks()
{
    for(i = 0; i < sites.length; i++)
    {
        var g = sites[i];
        var u = g[0];
        u = u.replace('{url}', escape(window.location.href));
        u = u.replace('{title}', escape(window.document.title));
        var img = (imagepath == '0') ? '' : '<img src="transparent1x1.gif" class="'+g[2]+'" alt="'+g[1]+'" />&nbsp; ';
        var k = '<a href="'+u+'">'+img+g[1]+'</a>&nbsp;';
        window.document.write(html_before+k+html_after);                
    }
}

这是 CSS 样式表代码:

<style type="text/css">
<!--
.socialsprite {background:url(img_socialsprites.jpg);}
    .social {height:22px;}
    .social {width:22px;}

        /* Social Images */
.blinklist {background-position:0px 0px;}
.blogmarks {background-position:0px -22px;}

这似乎奏效了。


我现在有这个工作。

请参阅底部的主要帖子更新。

我在那里写了更新,因为该网站不会让我在几个小时内发布我自己的答案,而且我不想浪费任何人的时间。

感谢您的建设性意见,他们帮助了很多。

4

1 回答 1

0

查看生成的 HTML。看起来您在类名周围缺少一些引号:

sites[0] = new Array('http://blinklist.com/index.php?Action=Blink/addblink.php&Url={url}', 'Blinklist',  '<div class=i_blinklist></div>');

应该

sites[0] = new Array('http://blinklist.com/index.php?Action=Blink/addblink.php&Url={url}', 'Blinklist',  '<div class="i_blinklist"></div>');

**编辑** 另外,将变量“k”记录到控制台“ console.log(k) ”并验证 html。它生成以下内容,这也是不正确的。请注意,您的img src等于 div 而不是实际路径:

<a href="http://blinklist.com/index.php?Action=Blink/addblink.php&Url=http%3A//fiddle.jshell.net/_display/"><img src="<div class="i_blinklist"></div>" alt="Blinklist" />&nbsp; Blinklist</a>&nbsp; 

据我所知,你应该使用类似的东西:

 var k = '<a href="'+u+'">'+img+g[1]+'</a>&nbsp;';

随着生成:

<a href="..."><div class="i_blinklist"></div>&nbsp; Blinklist</a>&nbsp;

最后一点是,您应该在锚标记内使用跨度而不是div 。同样,这不是有效的 HTML。有关更多信息,请参阅https://stackoverflow.com/a/1828032/1220302

于 2012-07-17T11:44:40.790 回答