我有一些代码,我单击弹出菜单按钮,然后菜单出现,当我在菜单元素上执行下一步.click()时,它尝试使用菜单选项中的AJAX链接打开新选项卡,但我想要使用它作为用户,然后它将在相同的选项卡中执行技巧,而无需打开新的。有没有办法让浏览器认为用户点击了那个?
HTML
<a class="_54nc" href="/ajax/groups/members/remove.php?group_id=xxx&uid=xxx" rel="dialog-post" role="menuitem">
<span>
<span class="_54nh">Remove from group</span>
</span>
</a>
JS
array = $('a._54nc').get();
array[0].click();
所以基本上,如果用户点击该链接,将显示同一选项卡上的下一个弹出窗口,但是当我使用javascript执行此操作时,它会尝试在新选项卡中打开AJAX链接并以失败告终。
答案 0 :(得分:1)
如果您在浏览器的标签中加载了content script,则可以创建mouse event,然后触发事件以复制用户点击dom的效果
/**
* create mouse event and dispatch
* param {string} type event name
* param {DOM Element} el DOM element on which event will trigger
*/
function triggerMouseEvent (type, el) {
var myEvent = new MouseEvent(type, {
'view': window,
'bubbles': true,
'cancelable': true
});
el.dispatchEvent(myEvent);
}
var array = $('a._54nc').get();
var element = array[0];
triggerMouseEvent('mousedown', element);
triggerMouseEvent('mouseup', element);
如果要在同一窗口中打开网址,则可以更改窗口的位置。 (正如@ some-non-descript-user在评论中指出的那样)
var uri = element.getAttribute('href');
self.location.href = uri;
您可以做的另一件事是在页面中使用相同的网址插入iframe。
var myFrame = '<iframe src='+uri+' width="'+window.innerWidth+'" height="'+window.innerHeight+'" style="position:absolute;"></iframe>';
$('body').append(myFrame);
你可以隐藏其余的dom