【问题标题】:Google translate remove arrow in IE谷歌翻译在IE中删除箭头
【发布时间】:2013-06-09 00:57:06
【问题描述】:

我希望从谷歌翻译按钮中删除箭头,无论我做什么,我都无法从 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);">▼</span>
    </a>
</span>
</div>
</div>
</div>

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

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

【问题讨论】:

  • 我们能否获得一些标记,以便我们知道我们正在使用什么?
  • 已编辑发布以包含。很抱歉没有包括第一次。

标签: jquery html css internet-explorer-7 google-translate


【解决方案1】:

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

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

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

使用#google_translate_element a&gt;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() 方法来进行全局替换。

【讨论】:

  • 这些似乎是正确的,我会使用这些,但问题似乎是它在文档之后加载。所以设置超时将其删除。谢谢你的这些。我用这个: setTimeout(function() { $('#google_translate_element .goog-te-gadget-simple span a.goog-te-menu-value span:last-child').hide(); }, 500);
【解决方案2】:

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

【讨论】:

  • 我也在运行带有 dom 辅助的 selectizr,它在使用 jQuery 运行时增加了对 :last-child 的支持。它不是一个CSS问题。它甚至不会让我用 jquery 找到可疑跨度。
  • 你会想要等到谷歌脚本加载之后再启动它。您可以将其包装在 if 语句中检查以确保使用 .length() 元素存在,如下所示: $('#googleElement').length
猜你喜欢
  • 2012-01-03
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
  • 2022-01-25
相关资源
最近更新 更多