Javascript 加载弹出窗口时运行bookmarklet函数
我只想说我是新加入bookmarklets的,所以任何帮助都将不胜感激。因为我遇到的大多数用户在理解如何添加和使用bookmarklet时都有困难,所以我想制作一个易于使用的按钮,当单击该按钮时,会打开一个新窗口/选项卡,同时使用bookmarklet作为其URL 我拥有的bookmarklet需要两次单击,一次单击打开页面,第二次单击将脚本注入head标记。我认为我应该使用myWindow=window.open,但在花了几个小时试图设置它之后,我似乎处于停滞状态。我使用的代码如下Javascript 加载弹出窗口时运行bookmarklet函数,javascript,settimeout,onload,bookmarklet,new-window,Javascript,Settimeout,Onload,Bookmarklet,New Window,我只想说我是新加入bookmarklets的,所以任何帮助都将不胜感激。因为我遇到的大多数用户在理解如何添加和使用bookmarklet时都有困难,所以我想制作一个易于使用的按钮,当单击该按钮时,会打开一个新窗口/选项卡,同时使用bookmarklet作为其URL 我拥有的bookmarklet需要两次单击,一次单击打开页面,第二次单击将脚本注入head标记。我认为我应该使用myWindow=window.open,但在花了几个小时试图设置它之后,我似乎处于停滞状态。我使用的代码如下 &
<button onclick="javascript:(function(){var a=document.createElement('script');a.type='text/javascript';a.src='https://www.weebly.com/uploads/5/0/1/8/5018607/redirect.js';try{document.getElementsByTagName('head')[0].appendChild(a);}catch(err){window.location = 'https://gamessl.ageofchampions.com/aoc/?cmd[0]=308&raid_difficulty=0';}finally {var directloc = 'https://gamessl.ageofchampions.com/aoc/?cmd[0]=308&raid_difficulty=0';if(window.location != directloc){window.location = directloc;var b=document.createElement('script');b.type='text/javascript';b.src='https://www.weebly.com/uploads/5/0/1/8/5018607/raid-collector.js';document.getElementsByTagName('head')[0].appendChild(b);}}})();">GD's Raid Collector</button>
GD的Raid收集器
上面的代码可以正常工作,但会在同一窗口中打开bookmarklet。无论我将myWindow=window.open放在代码的何处,它都会阻止bookmarklet一起工作。如果我想使用myWindow=window.open,我需要将它放在我的编码中的什么地方?如果不是,我还应该用什么来完成这项任务
注意:我尝试过的许多方法之一就是如下
<a href="javascript:(function(){ myWindow=window.open(‘javascript:(function(){var a=document.createElement('script');a.type='text/javascript';a.src='https://www.weebly.com/uploads/5/0/1/8/5018607/redirect.js';try{document.getElementsByTagName('head')[0].appendChild(a);}catch(err){window.location = 'https://gamessl.ageofchampions.com/aoc/?cmd[0]=308&raid_difficulty=0';}finally {var directloc = 'https://gamessl.ageofchampions.com/aoc/?cmd[0]=308&raid_difficulty=0';if(window.location != directloc){window.location = directloc;var b=document.createElement('script');b.type='text/javascript';b.src='https://www.weebly.com/uploads/5/0/1/8/5018607/raid-collector.js';document.getElementsByTagName('head')[0].appendChild(b);}}})();’); })();" rel="nofollow"><button>Test Raid Collector</button></a>
更新: 好的,所以我通过下面的代码设法让bookmarklet在一个新窗口中打开
<script>
function open_win()
{ myWindow=window.open("javascript:(function(){var a=document.createElement('script');a.type='text/javascript';a.src='https://www.weebly.com/uploads/5/0/1/8/5018607/redirect.js';try{document.getElementsByTagName('head')[0].appendChild(a);}catch(err){window.location = 'https://gamessl.ageofchampions.com/aoc/?cmd[0]=308&raid_difficulty=0';}finally {var directloc = 'https://gamessl.ageofchampions.com/aoc/?cmd[0]=308&raid_difficulty=0';if(window.location != directloc){window.location = directloc;var b=document.createElement('script');b.type='text/javascript';b.src='https://www.weebly.com/uploads/5/0/1/8/5018607/raid-collector.js';document.getElementsByTagName('head')[0].appendChild(b);}}})();","GD's Raid Collector","width=800px,height=800px"); }
</script>
函数open_win()
{myWindow=window.open(“javascript:(function(){var a=document.createElement('script');a.type='text/javascript';a.src='1https://www.weebly.com/uploads/5/0/1/8/5018607/redirect.js“;请尝试{document.getElementsByTagName('head')[0].appendChild(a);}catch(err){window.location=”https://gamessl.ageofchampions.com/aoc/?cmd[0]=308&raid_难度=0';}最后{var directloc='1〕https://gamessl.ageofchampions.com/aoc/?cmd[0]=308&raid_难度=0';if(window.location!=directloc){window.location=directloc;var b=document.createElement('script');b.type='text/javascript';b.src='1https://www.weebly.com/uploads/5/0/1/8/5018607/raid-collector.js';document.getElementsByTagName('head')[0].appendChild(b);}}}();“,“GD的Raid收集器”,“宽度=800px,高度=800px”);}
关于
<input type="button" value=" Test GD's Raid Collector " onclick="open_win()">
现在的问题是,当我第二次单击按钮时,它不会像我需要的那样重用bookmarklet,因此我需要bookmarklet使用onload函数或其他东西,在第一次单击时将脚本元素附加到标题中,而不需要第二次单击
再一次,我是新加入bookmarklets的,如果有人能帮我解决这个问题,我将不胜感激,提前感谢所有可能帮助我解决这个问题的人
更新:
好的,我最近发现setTimeout应该可以做到这一点,但我需要它在setTimeout之后打开同一个bookmarklet,我不知道该怎么做。如果有人能帮忙,我将不胜感激。bookmarklet是一个javascript,您可以将它放在书签/收藏夹链接中。向用户展示如何安装的简单方法是将它放在href链接中,然后告诉他们右键单击并添加到Favorite我知道这是bookmarklet的预期用途,但它们也可以直接在地址栏中使用。考虑到这一点,我希望使用这种方式,它可以在单击按钮时自动将其添加到新窗口,然后使用相同的bookmarklet重新加载页面。我最近发现要做到这一点,最常用的方法是让setTimeout使用相同的bookmarklet重新加载页面,但我不知道如何做………P.S对于Chrome/Firefox用户,他们也可以简单地拖放书签栏/选项卡中的链接,而IE用户必须右键单击,然后选择“添加到收藏夹”。找到了如何正确使用setTimeout,但仍有问题到同源策略意味着,即使编码工作正常,也不会将bookmarklet加载到地址栏中。这里有一个链接,用于查看如何使用setTimeout。如果您尝试执行的操作是可能的,则任何人都可以创建一个链接,打开指向任何站点的弹出窗口..facebook..ebay..paypal..chase..和页面控制..如何书签是一个很小的循环孔,让我们可以像访问同一个域中的页面一样访问页面。但这是因为需要一个人工步骤。例如,为您的FAV添加快捷方式。然后打开网站并单击收藏夹。这会使它更安全(ish)…即使现在网络浏览器对它的支持也越来越少…chrome和IE在将javascript:标记粘贴到地址栏时会将其删除..可能会重复