在Gmail邮件正文中运行Javascript

时间:2010-05-09 03:41:20

标签: math latex gmail greasemonkey mathml

我想在收到的gmail消息中显示LaTeX数学,因此例如$ \ mathbb P ^ 2 $将显示为一个不错的公式。现在,有几个可用的Javascripts(例如,this one或MathJax可以完成这项工作,我只需要在合适的时间调用它们来操作gmail消息。

我知道可以在“基本HTML”和“打印”视图中执行此操作。是否可以在标准Gmail视图中执行此操作?我试图在“canvas_frame”iframe之前插入对javascript的调用,但这不起作用。

我怀疑通过任何Javascript操纵Gmail邮件将是一个主要的安全漏洞(想想可以插入的所有恶意链接)以及Google会采取一切措施来防止这种情况发生。所以我的问题的答案可能是'不'。我是对的吗?

当然,只需在服务器上使用MathJax,Google就可以很容易地实现对LaTeX和MathML数学的查看。我做了相应的Gmail实验室请求,但没有答案,显然没有谷歌的兴趣。

所以,再说一次:在客户端没有谷歌的合作可能吗?

2 个答案:

答案 0 :(得分:6)

我认为,更好的方法之一可能是使用Google Charts API嵌入图片。

<img src="http://chart.apis.google.com/chart?cht=tx&chl=x=\frac{-b%20\pm%20\sqrt{b^2-4ac}}{2a}">

要了解详情:https://developers.google.com/chart/image/ [请注意,API已被正式弃用,但有效期至2015年4月]

如果你真的必须使用LaTeX和一些js库,我认为你可以通过在iframe中注入脚本标记来实现这一目标。 我希望这是一个很好的起点。

示例:

// ==UserScript==
// @name           Test Gmail Alterations
// @version        1
// @author         Justen
// @description    Test Alter Email
// @include        https://mail.google.com/mail/*
// @include        http://mail.google.com/mail/*
// @license        GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html
// ==/UserScript==
(function GmailIframeInject() {

    GM_log('Starting GMail iFrame Injection');
    var GmailCode = function() {
        // Your code here;
        // The ':pd' (div id) changes, so you might have to do some extra work
        var mail = document.getElementById(':pd');
        mail.innerHTML = '<h1>Hello, World!</h1>';
    };

    var iframe = document.getElementById('canvas_frame');
    var doc = null;
    if( iframe ) {
        GM_log('Got iFrame');
        doc = iframe.contentDocument;
    } else {
        GM_log('ERROR: Could not get iframe with id canvas_frame');
        return
    }

    if( doc ) {
        GM_log('Injecting GmailCode');
        var code = "(" + GmailCode + ")();"
        doc.body.appendChild(doc.createElement('script')).innerHTML=code;
    } else {
        GM_log('ERROR: Could not get iframe content document');
        return;
    }
})();

答案 1 :(得分:1)

嗯,就我所知(例如this one)而言,已经有一些关于GMail做的事情。这是一个可能的安全漏洞吗?当然,您使用可执行代码执行的任何操作都存在风险。谷歌似乎对他们不感兴趣的事物采取了冰冷的速度。他们似乎确实基于内部支持的想法发挥作用,所以最好的方法是寻找有同情心的谷歌,如果你想让他们在GMail中加入一些东西。否则坚持Greasemonkey,至少你会有一个简单的安装路径给其他想要看到相同功能的人。