Не удалось открыть ссылку в новой вкладке с помощью XPages

Я работаю над приложением, и я застрял, когда хотел открыть ссылку в новой вкладке или окне. Я использую Lotus Notes Designer Release 8.5.2FP1. Я прикрепил свой кусок кода.

<xp:eventHandler event="onclick" submit="true"
        refreshMode="complete">
        <xp:this.action><![CDATA[#{javascript:try{
var doc = database.getProfileDocument("frmConfiguration","");
var url = doc.getItemValueString("HeaderLink1URL");
view.postScript("var tempwindow =window.open('"  +url+"','_blank');tempwindow.focus();");
}catch(e){
}}]]></xp:this.action>

person Raj    schedule 02.04.2013    source источник
comment
Вы можете установить target="_blank" в xp:link, чтобы открыть ссылку в новом окне. Но здесь я вижу, что вы использовали view.postScript, какая конкретная причина для этого? Также не могли бы вы опубликовать весь фрагмент кода для xp:link?   -  person Naveen    schedule 02.04.2013
comment
Нет особой причины использовать постскриптум, я случайно пытаюсь заставить свой код работать. Найдите фрагмент xp:link следующим образом: ‹xp:link escape=false id=link1› ‹xp:this.text›некоторый код‹/xp:this.text› ‹xp:eventHandler event=onclick submit=true refreshMode=complete › ‹xp:this.action›‹![CDATA[#{javascript:try{ var doc = database.getProfileDocument(frmConfiguration,); var href = doc.getItemValueString(HeaderLink1URL); view.postScript(var tempwindow = window.open(' + href + ','_blank'); tempwindow.focus();); }catch(e){ }}]]›‹/xp:this.action› ‹/xp:eventHandler›‹/xp:link›   -  person Raj    schedule 02.04.2013
comment
Пожалуйста, добавьте код к своему вопросу, отредактировав его.   -  person Naveen    schedule 02.04.2013


Ответы (3)


На основе вашего обновленного кода в комментарии вы можете просто добавить target="_blank" и вместо использования события onClick использовать атрибут value, который будет указывать на открываемый URL. Итак, ваш код будет примерно таким:

<xp:link escape="false" id="link1" target="_blank">
    <xp:this.text>some code</xp:this.text>
    <xp:this.value><![CDATA[#{javascript:var doc = database.getProfileDocument("frmConfiguration","");
var href = doc.getItemValueString("HeaderLink1URL");
return href;}]]></xp:this.value>
</xp:link>
person Naveen    schedule 02.04.2013
comment
вауу... Большое спасибо @Naveen.SOLVED - person Raj; 03.04.2013

Самый простой способ сделать это будет примерно так:

<xp:text escape="false" id="newTab"><xp:this.value><![CDATA[#{javascript:return "<a href=\"http://www.google.com/\" target=\"_blank\">Google</a>";}]]></xp:this.value></xp:text>

Это откроет Google в дополнительной вкладке.

Обновление:

Если вы хотите использовать xp:link, вы можете попробовать:

<xp:link escape="false" id="newTab" text="test">
        <xp:this.onclick><![CDATA[var ret = window.open("http://www.google.com",'_blank');
]]></xp:this.onclick>
    </xp:link>

Если вы хотите открыть ссылку в отдельном окне или вкладке, я рекомендую не использовать действие, используйте событие на стороне клиента onclick на вкладке параметров.

person Michael Saiz    schedule 02.04.2013
comment
Спасибо за ваш быстрый ответ. Как его включить в xp link? - person Raj; 02.04.2013
comment
Ok. Но мне нужно включить данные из внутреннего документа. - person Raj; 02.04.2013
comment
Нет проблем там, где вам это нужно, но я бы использовал решение Навина. Вау, я упустил из виду свойство target ... или это новое в 8.5.3? да я просто слепой =) - person Michael Saiz; 02.04.2013
comment
Мне нужно получить URL-адрес из документа профиля. Я новичок в xpages, есть ли какая-нибудь функция, которая может извлекать данные из SSJS в CSJS? - person Raj; 02.04.2013
comment
Хм... вы пытаетесь открыть документ из панели просмотра? В этом случае будет лучшее решение. - person Michael Saiz; 02.04.2013

Вот пример кода открытия URL-адреса как на стороне клиента, так и на стороне сервера.

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:button value="Client Side Open Button." id="ClientSideButton">
        <xp:eventHandler event="onclick" submit="false">
            <xp:this.script><![CDATA[var href = "http://www.ibm.com";
var tempwindow = window.open(href,'_blank');
tempwindow.focus();
]]></xp:this.script>
        </xp:eventHandler>
    </xp:button>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:button id="serverSideButton" value="Server Side Open Button ">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:var href = "http://www.ibm.com";
view.postScript("var tempwindow = window.open('" + href + "','_blank'); tempwindow.focus();");

}]]></xp:this.action>
        </xp:eventHandler>
    </xp:button>
</xp:view>

Если этот код не работает должным образом, необходимо проверить две вещи.

  1. Убедитесь, что переменная URL задана правильно.

  2. Убедитесь, что вы используете последнюю версию. window.open() не работал должным образом до версии 8.5.1FP2.

person Simon O'Doherty    schedule 02.04.2013