2

フォームがレンダリングされるさまざまな日に変更されるURLを指すハイパーリンクをLivecycleフォームに作成する方法を理解しようとしています。たとえば、ある日、ハイパーリンクが次のことを指すようにしたい場合があります。

mywebsite / mypage?opt​​ion = XXX

そして別の日に私はそれが指し示すことを望みます:

mywebsite / mypage?opt​​ion = YYY

XXXとYYYは、XMLとして非常に簡単にフォームのデータに渡すことができますが、これに対応するようにハイパーリンクを変更する方法がわかりません。

助言がありますか?

4

3 に答える 3

3

これは、LiveCycle Designer の JavaScript で実現できます。次のスクリプトを Form の docReady イベントに配置すると、テキスト オブジェクトの URL を動的に変更できます。

 form1::docReady - (JavaScript, client)
// If this code is running on the server, you don't want it to run any code 
// that might force a relayout, or you could get stuck in an infinite loop
if (xfa.host.name != "XFAPresentationAgent") {

    // You would load the URL that you want into this variable, based on 
    // whatever XML data is being passed into your form
    var sURL = "www.stackoverflow.com"; // mywebsite/mypage?option=xxx

    // URLs are encoded in XHTML.  In order to change the URL, you need 
    // to create the right XHTML string and push it into the Text object's 
    // <value> node. This is a super simple XHTML shell for this purpose.  
    // You could add all sorts of markup to make your hyperlink look pretty
    var sRichText = "<body><p><a href=\"" + sURL + "\">Foo</a></p></body>";

    // Assuming you have a text object called "Text1" on the form, this 
    // call will push the rich text into the node.  Note that this call        
    // will force a re-layout of the form
    this.resolveNode("Text1").value.exData.loadXML(sRichText, false, true);
}

注意点がいくつかあります。Acrobat の URL は、Acrobat 9.0 以降でのみサポートされています。そのため、古いバージョンの Acrobat を使用しているユーザーがフォームを開いた場合、URL は機能しません。

また、「if (xfa.host.name !=...)」行からわかるように、フォームがサーバー上で生成されている場合、このコードは正しく実行されません。 docReady 中のフォームは、特定の古いバージョンの LiveCycle サーバーで問題を引き起こす可能性があります。このスクリプトをサーバー上で実行する必要がある場合は、別のイベントを選択してから form::docReady を選択する必要があります。

于 2009-08-07T14:25:26.257 に答える
1

WorkSpace のユーザーから、リンクをクリックすると同じタブで開かれるため、WorkSpace フォームが失われるという多くの苦情が寄せられました。Designer 11 ではそれを変更するオプションがありません。それも。

境界線も背景もないボタンを作成し、クリックイベントにこの行を含めました(Javascriptでは、クライアントで実行します)

app.launchURL("http:/stackoverflow.com/", true);

日付に基づいて適切な URL を選択するロジックを追加するのは簡単で、フォームの再レンダリングは発生しません。

ハイパーリンクが他のテキストと一致している場所では、リンクのテキストを青色で下線を引いたままにし、ハイパーリンクは付けず、その上にボタン (背景なし、境界線なし、キャプションなし) を配置します。それが機能するには、フローされていないサブフォームが配置されている必要があるため、レイアウトによっては少しぎこちなくなる可能性があります。

うわー、パーティーに遅刻してしまったことに今気づきました。まあ、同様の問題に直面しているES4を使用している人にとっては. . .

于 2015-06-23T17:29:48.297 に答える
0

PDFのハイパーリンクを操作するためにサードパーティのコンポーネントを使用することになりました...これは約1000ドルかかるので、より良い解決策があればいいのにと思います。

于 2009-07-30T17:38:23.680 に答える