如何创建持久工具栏?

时间:2017-06-19 19:17:45

标签: jquery firefox dynamics-crm greasemonkey userscripts

这适用于Firefox(Waterfox)中的greasemonkey用户脚本。

我们有一个云数据库(CRM Dynamics),为了加载特定记录,浏览器使用不同的网址和参数执行三个页面加载。

我想从其中一个页面加载(中间加载的页面加载)中获取参数,并将其显示在页面某处以供参考。所以我创建了一个适合主色带正下方的div。

问题在于,由于页面加载了三次,这意味着脚本加载了三次,因此我使用GM_getValueGM_setValue来存储和检索后续页面加载的数据。

然而,情况比这更糟。

  • 页面中的DOM项目只能在第一次加载时添加/修改 - 此加载会加载所有html。
  • 我需要的值是第二次加载的查询参数 - 它只是将数据填入第一页。
  • 无法在第二或第三页加载的工具栏div上获取查询参数值;在第二次加载之前我没有价值。我认为后两个页面加载仅用于在页面加载之间传递参数 - 这些加载中没有页面DOM。
  • 每个页面加载都会触发用户脚本。
  • 在第三个页面加载中,我可以执行操作,但无法与html交互(此页面加载中没有任何内容),即使html位于窗口中。

有没有办法将我的toolbar-div放在浏览器的DOM而不是页面的DOM中?这样,每个页面加载都可以访问。

我想要做的是以某种方式获得第一页加载,以便在第三页加载完成后执行某些操作

1 个答案:

答案 0 :(得分:0)

想出来! Brock Adam的评论让我找到了解决方案。谢谢,布洛克。

所以我想一下在第一页加载时运行的代码,并确保它执行此操作:

$(window).on('load', function () {
    console.log('updating itemid');
    $('#myd').text(GM_getValue("itemid"));
});

window.load事件会在每个页面加载时触发,因此当最后一个页面加载运行时,它会触发此加载事件并更新div文本。显然,在第三次页面加载完成之前,此事件才会触发。