@sergerdn в общем, есть трабла. Т.к. page.setViewport применяет изменения только для текущей активной вкладки. Для новых вкладок, например, тех что открываются при клике по ссылкам с атрибутом target="_blank" сей магия скрипта пропадает.
Есть ли какие-нибудь способы в BAS запретить открытие новых вкладок? Ну т.е. игнорировать атрибут target="_blank". Насколько знаю BAS юзает какой-то пропатченный Chromium.
PS. В CEF (Chromium Embedded Framework) такая штука делается довольно просто в событии OnBeforePopup в котором перехватывается URL и далее просто вызывается на главном фрейме(вкладке).
public class CustomLifeSpanHandler : ILifeSpanHandler
{
// Load new URL (when clicking a link with target=_blank) in the same frame
public bool OnBeforePopup(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
browser.MainFrame.LoadUrl(targetUrl);
newBrowser = null;
return true;
}
public bool DoClose(IWebBrowser chromiumWebBrowser, IBrowser browser)
{
// throw new NotImplementedException();
return true;
}
public void OnAfterCreated(IWebBrowser chromiumWebBrowser, IBrowser browser)
{
// throw new NotImplementedException();
}
public void OnBeforeClose(IWebBrowser chromiumWebBrowser, IBrowser browser)
{
// throw new NotImplementedException();
}
}