我正在为Google Chrome编写用户脚本,该脚本会自动打开特定的聊天标签,但它无效,
我认为这是因为Chat.openTab
没有明确定义,因为当我在javascript控制台中运行代码时,它可以正常工作。
CODE:
var face = "facebook.com"
var domain = document.domain
if (domain = face)
{
Chat.openTab("sam.sebastian1", "Seb")
}
答案 0 :(得分:3)
if (domain = face)
应该是
if (domain === face)
答案 1 :(得分:2)
其他答案指出它应该是(domain == face)
,而 是错误。
然而,并不是阻止脚本按预期工作的原因。
主要问题是Chrome用户脚本无法使用目标页面中定义的JS。您必须将代码注入页面,如下所示:
function functionToInject () {
function myCode () {
/*--- This is where you put everything you want to do that
requires use of the page's javascript.
*/
var face = "facebook.com"
var domain = document.domain
if (domain == face)
{
Chat.openTab ("sam.sebastian1", "Seb");
}
}
myCode ();
}
function addJS_Node (text, s_URL) {
var scriptNode = document.createElement ('script');
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
var targ = document.getElementsByTagName('head')[0]
|| document.body || document.documentElement;
targ.appendChild (scriptNode);
}
addJS_Node ( '(' + functionToInject.toString() + ')()' );
这是基本答案。 然而,因为这是Facebook,事情有点复杂。
Chat
对象无法立即加载。为了解决这些障碍,我们设置了一个计时器,在找到资源之前不会尝试执行我们的代码。
像这样:
function functionToInject () {
function myCode () {
/*--- This is where you put everything you want to do that
requires use of the page's javascript.
*/
var face = "facebook.com"
var domain = document.domain
if (domain == face)
{
Chat.openTab ("sam.sebastian1", "Seb");
}
}
var waitForKeyElements = setInterval (checkForElement, 500);
function checkForElement () {
if (typeof Chat != "undefined" ) {
clearInterval (waitForKeyElements);
myCode ();
}
}
}
function addJS_Node (text, s_URL) {
var scriptNode = document.createElement ('script');
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
var targ = document.getElementsByTagName('head')[0]
|| document.body || document.documentElement;
targ.appendChild (scriptNode);
}
addJS_Node ( '(' + functionToInject.toString() + ')()' );
答案 2 :(得分:1)
if (domain == face)
{
Chat.openTab("sam.sebastian1", "Seb")
}
不
if (domain = face)
{
Chat.openTab("sam.sebastian1", "Seb")
}