我想把我的电子邮件从一个有点不可靠的提供商(比如X)转移到Gmail。不幸的是,电子邮件提供商不允许文件夹导出或直接IMAP链接。
我唯一能做的就是通过POP3将Gmail连接到X,这样X收件箱中的任何内容都会被复制到Gmail。
这个我已经设置好了,它可以工作,但POP3当然只扫描收件箱。
我在收件箱以外的其他文件夹中有数千封电子邮件,所以我需要先把它们移到收件箱。然而,我只能通过X的web GUI移动消息,它每次只允许移动一页消息。
所以我必须打开"保存的邮件"文件夹,单击"全选",选择"收件箱",然后单击"移动",然后页面将重新加载,我需要再次这样做。。。数百次。
我制作了一个Javascript函数(假设MoveToInbox())来模拟这些操作,然后在Firefox中打开页面并启动了Firefox Scratchpad。所以,我可以在Scratchpad中继续按Ctrl+R,然后等待页面重新加载,然后再按一次,这节省了大约50%的时间。
然而,我想知道,我是否可以以某种方式让Scratchpad使用该选项卡,以便它等待页面重新加载,然后执行脚本,然后再次等待,从而消除所有手动重复任务。
我想我可以用window.addEventListener来做这件事,但这个对象似乎在页面重新加载时被清除了,所以有什么可以代替的吗?
我自己的快速答案只是使用诸如GreaseMonkey之类的Firefox插件。
当然,在不同的情况下,解决方案会有所不同,但我自己的解决方案是GreaseMonkey Javascript:
// the function to select all messages and programmatically click on
// move button:
function moveToInbox()
{
selectAllCheckbox=document.getElementById("messagesForm")[0];
mailboxSelector=document.getElementsByName('targetMailbox')[0];
selectAllCheckbox.click(); // click on "select all" checkbox
mailboxSelector.selectedIndex=1; //specify that we are moving to inbox
inx.mail.mailbox.mailboxTransfer(); // execute provider's function for moving mail.
}
// This gets executed on any page that matches URL specified in Greasemonkey script properties
// I have put this to execute, if the URL is for the folder I want to move messages from.
messageList=document.getElementById("messagesForm")[0];
// in my case, if there are no more messages to move, the form is not created at all, so
// I can check for its existance, to determine if I need to execute moving.
if (messageList == null)
{
return;
}
else
{
moveToInbox();
}
使用iFrame
第一个问题是变量和函数在重新加载后丢失:
-将<iframe>
与src = "X"
一起使用
现在跨域策略造成了问题:
-将<iframe>
与src
放在同一网站上
然后,您可以使用iframeId.contentDocument
轻松访问和操作网站
例如:
导航到google.com,使用Inspect Element添加iframe:<iframe src="https://www.google.ae" id="someID"> </iframe>
然后,您可以使用JavaScript对iframe执行任何操作:someID.contentDocument.location.reload();
setTimeout('someID.contentDocument.getElementById('lst-ib').value="iframes rock"',1000); //You should use something better than setTimeout to wait for the website to load.