gpt4 book ai didi

javascript - 让 jQuery 和 GM_addStyle 在基于有效的 Greasemonkey 脚本的 Chrome 用户脚本中工作

转载 作者:行者123 更新时间:2023-11-29 22:27:28 27 4
gpt4 key购买 nike

我写了一个简单的Greasemonkey script放大天桥弹出窗口中的缩略图。它在其中使用了很多 jQuery。它在 Firefox 上工作得很好。但在 Chrome 上不行,因为它不支持 @require。

我遇到了这个 solution对于这件事。但是即使我将脚本与绕过代码集成后,该脚本也无法在 Chrome 上运行。我只是将所有脚本代码放在解决方案代码的主要功能中。

错了吗?如果有人能指出问题出在哪里,以及我能做些什么来解决问题,我们将不胜感激。

function addJQuery(callback) {
var script = document.createElement("script");
script.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");
script.addEventListener('load', function() {
var script = document.createElement("script");
script.textContent = "(" + callback.toString() + ")();";
document.body.appendChild(script);
}, false);
document.body.appendChild(script);
}

function main()
{
$("body").append ('<div id="idLargePicturePopupWindow"><img></div>');

$('#idLargePicturePopupWindow').bind
(
"mouseenter mouseleave",
{bInPopup: true},
myImageHover
);

$('#profPhotos .profPhotoLink > img').bind
(
"mouseenter mouseleave",
{bInPopup: false},
myImageHover
);

function myImageHover (zEvent)
{
if (zEvent.type == 'mouseenter')
{

if ( ! zEvent.data.bInPopup)
{

var imgurl = this.src.toString();
var bigimg = imgurl.replace(/\/thumbs\/[0-9x]+\//i, "/photos/");

$("#idLargePicturePopupWindow img").attr ('src', bigimg);
}

$("#idLargePicturePopupWindow").show();
}
else
{
$("#idLargePicturePopupWindow").hide();
}
}

GM_addStyle ( (<><![CDATA[
#idLargePicturePopupWindow
{
position: absolute;
background: white;
border: none;
margin: 1ex;
opacity: 1.0;
z-index: 1222;
min-height: 100px;
min-width: 200px;
padding: 0;
display: none;
top: 2em;
left: 50em;
}
#idLargePicturePopupWindow img
{
margin: 0;
margin-bottom: -4px;
padding: 0;
}
]]></>).toString () );
}

addJQuery(main);

最佳答案

两个主要问题和 1 个可能问题:

1) 不要将 GM_addStyle() 包裹在 main() 函数中。 GM_addStyle() 仅在脚本范围内有效,它不会注入(inject)到目标页面(即 main()addJQuery() 业务确实如此)。

2) 当前代码使用E4X使多行字符串发送到 GM_addStyle(),但 Chrome 不支持 E4X。

唉,the multiline string hack that Chrome does support (for now)在 Firefox 中不起作用。

这意味着如果您希望同时支持两种浏览器,则使用 GM_addStyle() 编写逼真的样式会稍微困难一些。像这样使用多行转义字符 (\):

GM_addStyle ( "                                 \
#idLargePicturePopupWindow { \
position: absolute; \
background: white; \
border: none; \
margin: 1ex; \
opacity: 1.0; \
z-index: 1222; \
min-height: 100px; \
min-width: 200px; \
padding: 0; \
display: none; \
top: 2em; \
left: 50em; \
} \
#idLargePicturePopupWindow img { \
margin: 0; \
margin-bottom: -4px; \
padding: 0; \
} \
" );

¿3?) addJQuery() 的特定版本可能并不总是有效(竞争条件)。如果没有,请告诉我。

关于javascript - 让 jQuery 和 GM_addStyle 在基于有效的 Greasemonkey 脚本的 Chrome 用户脚本中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8624210/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com