我需要将一些 JavaScript 注入(inject)到现有应用程序中。
应用程序通常嵌入一个 iframe
,如下所示:
<html>
<body>
<iframe src="http://webchat.quakenet.org/" width="647" height="400"></iframe>
</body>
</html>
它是一个基于开源 JavaScript 的 IRC 客户端 http://webchat.quakenet.org/ ( source )。
现在我喜欢注入(inject)一些 JS 来突出显示特殊消息。为此,我已经找到了要覆盖的 HilighterClass。
问题是,我该怎么做呢?我猜现代浏览器不允许将 JS 注入(inject)到 iFrame
中,或者?
如果iFrame
有问题,也许我可以像他们一样添加客户端:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<base />
<title>QuakeNet Web IRC (qwebirc)</title>
...
<script type="text/javascript">
var ui = new qwebirc.ui.Interface("ircui", qwebirc.ui.QUI, {"appTitle":"QuakeNet Web IRC","dynamicBaseURL":"/dynamic/leibniz/","baseURL":"http://webchat.quakenet.org/","validateNickname":false,"networkServices":["<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b6e797e2ded3e7f4d9c2f6f5e5d3c4c0d398c7c3d7ddd3d8d3c298d9c4d1" rel="noreferrer noopener nofollow">[email protected]</a>"],"nickValidation": {"maxLen":15,"validSubChars":"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_[]{}`^\\|0123456789-","validFirstChar":"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_[]{}`^\\|","minLen":2},"staticBaseURL":"/static/leibniz/","loginRegex":"^You are now logged in as [^ ]+\\.$","networkName":"QuakeNet"});
</script>
</head>
<body>
<div id="ircui">
<noscript>
<div id="noscript">Javascript is required to use IRC.</div>
</noscript>
</div>
</body>
</html>
要求:
- 客户端应连接到 quakenet.org 服务器。由于某些跨站点脚本限制,这可能是一个问题。
- 最好的情况是我的用户不需要其他插件。
最佳答案
你可以像 Privoxy 这样的代理服务器它可以将 JavaScript 注入(inject)到页面中。不幸的是,您的用户必须通过 Privoxy 进行所有浏览,因此这可能不是一个选择。
或者您设置自己的反向代理(例如 Squid)和 change the contents在转发之前。您可以将对 JavaScript 库的请求替换为对您自己的库的调用,该库包含原始 JavaScript 加上您的突出显示代码。
您肯定听说过Greasemonkey ,这是一个浏览器插件,可以做到这一点 - 注入(inject)内容。
关于javascript - "Inject"现有应用程序中的 JavaScript 用于操作 UI (qwebirc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12915187/