Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 加载弹出窗口时运行bookmarklet函数_Javascript_Settimeout_Onload_Bookmarklet_New Window - Fatal编程技术网

Javascript 加载弹出窗口时运行bookmarklet函数

Javascript 加载弹出窗口时运行bookmarklet函数,javascript,settimeout,onload,bookmarklet,new-window,Javascript,Settimeout,Onload,Bookmarklet,New Window,我只想说我是新加入bookmarklets的,所以任何帮助都将不胜感激。因为我遇到的大多数用户在理解如何添加和使用bookmarklet时都有困难,所以我想制作一个易于使用的按钮,当单击该按钮时,会打开一个新窗口/选项卡,同时使用bookmarklet作为其URL 我拥有的bookmarklet需要两次单击,一次单击打开页面,第二次单击将脚本注入head标记。我认为我应该使用myWindow=window.open,但在花了几个小时试图设置它之后,我似乎处于停滞状态。我使用的代码如下 &

我只想说我是新加入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:标记粘贴到地址栏时会将其删除..可能会重复