Я пытаюсь интегрировать корзину покупок SendOwl в свое приложение (подробная информация о приложении находится в конце).
Чтобы продемонстрировать проблему, я создал простой фрагмент, используя чистый HTML/Javascript. В разделе заголовка HTML у меня есть это:
<script type="text/javascript">
function SendOwl(url) {
window.location.href=url;
}
</script>
<script type="text/javascript" src="https://transactions.sendowl.com/assets/sendowl.js" ></script>
В теле у меня это:
Пример 1. Форма оформления заказа открывается в отдельном окне (нежелательное поведение):
<input type="button" onclick="SendOwl('https://transactions.sendowl.com/products/8/5C080C0F/purchase');" value="On Click" />
Снимок экрана 1. Обратите внимание, что URL-адрес изменился, и это не наложение (по сравнению со вторым).
Пример 2: Открывает форму оформления заказа в модальном окне в виде наложения (Желаемое поведение):
<a href='https://transactions.sendowl.com/products/8/5C080C0F/purchase'>a href</a>
Снимок экрана 2. URL-адрес остается прежним, но форма открывается в виде наложения.
Вы также можете увидеть живую демонстрацию на демонстрационной странице SendOwl.
Мое приложение основано на GWT (точнее, на SmartGWT). В моем приложении я вызываю обработчик кнопки onclick, чтобы вызвать Javascript, который вызывает ссылку «Купить сейчас» с помощью вызова JSNI (показан ниже). Но ссылка «Купить сейчас» всегда открывается в полном окне, как в примере 1 выше.
public static native void onBuyNowClick(String url) /*-{
$wnd.SendOwl(url);
}-*/;
Я пробовал $wnd.open(url)
, но у него такое же поведение.
Как заставить первый пример вести себя как второй, но все еще использовать кнопку при нажатии?
ОБНОВЛЕНИЕ:
Магия кроется в сценарии sendowl.js. Если я удалю этот скрипт, оба примера будут работать одинаково. Если бы я мог понять, как работает этот сценарий, это могло бы дать некоторые подсказки, чтобы заставить пример 1 работать так же, как пример 2.
Спасибо.
target= "_blank"
- person NiKoLaPrO   schedule 01.03.2016