2

我想从谷歌翻译按钮中删除箭头,无论我做什么,我都无法从 IE7 或 IE8 中删除它,这让我发疯了。

下面的箭头图像:

谷歌翻译中的箭头

我已经能够为翻译的其余部分设置样式,但是这个箭头不会去任何地方。我用于 Chrome 和 FF 的代码是:

div#google_translate_element div.goog-te-gadget-simple a.goog-te-menu-value span:last-child

我正在运行modernizr 和所有其他的东西来增加对最后一个孩子的支持。所有的 HTML 都是有效的,所以没有激活任何 querks 模式。我什至不能用 jquery 来定位它。它太奇怪了。

任何帮助都是极好的。

抱歉应该添加这个,这是谷歌希望你放入页面的内容:

    <div id="google_translate_element"></div>
<script type="text/javascript">
                                                    function googleTranslateElementInit() {
                                                      new google.translate.TranslateElement({pageLanguage: 'en', includedLanguages: 'de,es,fr,pl,zh-CN,zh-TW', layout: google.translate.TranslateElement.InlineLayout.SIMPLE, multilanguagePage: true}, 'google_translate_element');
                                                    }
                                                    </script><script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

然后这就是它吐出来的:

<div id="google_translate_element">
<div class="skiptranslate goog-te-gadget" dir="ltr" style="">
<div id=":0.targetLanguage" class="goog-te-gadget-simple" style="white-space: nowrap;">
<img src="http://www.google.com/images/cleardot.gif" class="goog-te-gadget-icon" style="background-image: url(http://translate.googleapis.com/translate_static/img/te_ctrl3.gif); background-position: -65px 0px;">
<span style="vertical-align: middle;">
    <a class="goog-te-menu-value" href="javascript:void(0)">
    <span>Select Language</span>
    <img src="http://www.google.com/images/cleardot.gif" width="1" height="1">
    <span style="border-left-width: 1px; border-left-style: solid; border-left-color: rgb(187, 187, 187);">&#8203;</span>
    <img src="http://www.google.com/images/cleardot.gif" width="1" height="1">
    <span style="color: rgb(155, 155, 155);">▼&lt;/span>
    </a>
</span>
</div>
</div>
</div>

它是我试图定位的最后一个跨度:

<span style="color: rgb(155, 155, 155);">▼&lt;/span>
4

2 回答 2

2

假设生成的代码永远不会改变,你可以这样做:

#google_translate_element span[style="color: rgb(155, 155, 155);"] {
    display:none;
}

不过,这似乎是一个很大的黑客攻击——如果您直接从 Google 加载此代码,则无法预测他们可能会以某种微妙的方式更改其代码并破坏您的选择器。

使用#google_translate_element a>span:last-child作为选择器可能是一种更“正确”的方式,但即便如此,谷歌决定更改其小部件的布局也是如此。几乎任何你试图用来访问这个元素的选择器都会在这个分数上遇到同样的问题。

另一个方法可能是使用 javascript 从字符串中查找和替换向下箭头字符。也许是这样的:

$("#google_translate_element a span").each(function() {
    $(this).html($(this).html().replace(/▼/,""));
});

在这里使用each(),这样我就可以避免对选择器过于具体,以避免上述问题。

而且我知道这看起来像是一种冗长的方法,但我试图避免破坏任何事件处理程序。否则我本可以这样做:

document.body.innerHTML = document.body.innerHTML.replace(/▼/,"");

但是,如果您使用事件处理程序,那会破坏一些东西,因为它会重建整个 DOM,因此请使用该each()方法来像这样全局地进行替换。

于 2013-06-12T20:14:03.300 回答
0

ie7 和 8 不理解最后一个孩子...如果我是你,我会通过条件注释目标 ie8 及以下插入 javascript,然后删除/隐藏元素。jQuery 是最简单的,你可以使用 jQuery last-child 选择器

于 2013-06-12T19:46:45.133 回答