Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Can't launch URL from table expression using IE Plugin

Hi,

I'm hoping someone can shed some light on this one for me.

I've set up an expression in a straight table in the format:

='Click here<url>qvp://qlikview/file1.qvw?vOpenParam=' & <fieldID>

Now this works great when I load the document through Access Point using AJAX client however if I try using the IE Plugin I get as far as the allow launch prompt and on clicking Yes it does nothing at all.

I can copy and paste the full URL into a new browser, change the parameter ID and all works perfectly. Is there something I should be aware of with the IE plugin?

I'm using the qvp:// format since I can't figure out how to append the parameter to the http://accesspoint format.

Any suggestions would be great!

Thanks

Chris

1 Solution

Accepted Solutions
stephencredmond
Luminary Alumni
Luminary Alumni

Hi,

It would probably work if you use the OpenDoc format to open the plugin:

http://server/qvplugin/opendoc.htm?document=nameofdoc.qvw

You might need to modify the opendoc.htm (in C:\Program Files\QlikView\Server\QlikViewClients\QlikViewPlugin) to handle the passing of parameters.

Regards,

Stephen

View solution in original post

4 Replies
Not applicable
Author

Any ideas at all would be appreciated!

stephencredmond
Luminary Alumni
Luminary Alumni

Hi,

It would probably work if you use the OpenDoc format to open the plugin:

http://server/qvplugin/opendoc.htm?document=nameofdoc.qvw

You might need to modify the opendoc.htm (in C:\Program Files\QlikView\Server\QlikViewClients\QlikViewPlugin) to handle the passing of parameters.

Regards,

Stephen

Not applicable
Author

Hi,

Thanks very much, that has done the trick! I've not had to modify the opendoc.htm file at all.

The URL is setup in a table column represented as a link so it's picking up the RowID and appending nicely to each URL. The format of the URL I've used is this:

'Test URL<url>http://servrname/qvplugin/opendoc.htm?document=Test.qvw?vOpenParam=' & ParamFieldName

Thanks again,

Chris

yakir_manor
Contributor III
Contributor III

this issue has 2 simple solutions (this solution also supports sub domain):

1. intervene in the opendoc.htm

the file location is:

C:\Program Files\QlikView\Server\QlikViewClients\QlikViewAjax

you can put a listener on the dom

$(document).bind('DOMSubtreeModified', function () {

  $("a[target='_blank']").each(function(i, element){resetBlankLinks(element);});

});

function resetBlankLinks(element){

  element.setAttribute('onclick','eval("'+element.href+'")');

  element.target="_self";

}

function somefunction(relativePath) {

  window.open(document.referrer.match(/h(.[^/]+)/)[0] + "//" + document.referrer.match(/:\/\/(.[^/]+)/)[1] + relativePath);

}

now your qlikview table link will be

'☍<url>javascript:void(somefunction("/SomeRelativePath/?SomeParam='&[SomeId]&'"))'

this is a solution that lets you go to a function you decide and do whatever you want, but i also slows down the dom a bit.

2. this solution i like better, you can go to relevant qlikview scripts and change them (if your using the web client):

go to

C:\Program Files\QlikView\Server\QlikViewClients\QlikViewAjax

now you need to search in files for

v.target="_blank"

i found:

  1. C:\Program Files\QlikView\Server\QlikViewClients\QlikViewAjax\htc\QvAjax.js
  2. C:\Program Files\QlikView\Server\QlikViewClients\QlikViewAjax\mobile\js\smalldevices.js
  3. the Qv.exe you cant change and this is not used in the web client

in each file you will find few locations (should be 2), i'v changed them
from:

v.target="_blank";

to:

v.target="_self";v.onclick=eval(m.url);

and my BI url is now:

'☍<url>javascript:void(window.open(document.referrer.match(/h(.[^/]+)/)[0] + "//" + document.referrer.match(/:\/\/(.[^/]+)/)[1] + "/SomeRelativePath/?SomeParam='&[SomeId]&'"));'

see if this helps you, maybe you will want different stuff but this is how you can do it.

you might want to use different target, see:
HTML a target Attribute

in any case you can open chrome developer tools (F12) to see the code that is created:

<a href='javascript:void(window.open(document.referrer.match(/h(.[^/]+)/)[0]%20+%20&quot;//&quot;%20+%20document.referrer.match(/:\/\/(.[^/]+)/)[1]%20+%20&quot;/SomeRelativePath/?SomeParam=SomeId&quot;));'

target="_self"

onclick="eval(&quot;javascript:void(window.open(document.referrer.match(/h(.[^/]+)/)[0] + &quot;//&quot; + document.referrer.match(/:\/\/(.[^/]+)/)[1] + &quot;/SomeRelativePath/?SomeParam=SomeId&quot;));&quot;)"

unselectable="on" style="position: absolute;">

  <div title="☍"

  style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); text-align: right; font-style: normal; font-weight: normal; text-decoration: underline; cursor: pointer; position: absolute; overflow: hidden; left: 0px; top: 128px; width: 20px; height: 16px;">

  <div unselectable="on" style="position: absolute; left: 0px; top: 0px; width: 20px; height: 16px;"></div>

  <div class="injected" style="padding: 0px 2px; width: 16px; height: 16px; display: table-cell; vertical-align: middle;">

   <div unselectable="on" title="☍"

   style="width: 16px; cursor: default; white-space: pre; overflow: hidden; word-wrap: normal;">

  <a href='javascript:void(window.open(document.referrer.match(/h(.[^/]+)/)[0]%20+%20&quot;//&quot;%20+%20document.referrer.match(/:\/\/(.[^/]+)/)[1]%20+%20&quot;/SomeRelativePath/?SomeParam=SomeId&quot;));'

  target="_self"

  onclick="eval(&quot;javascript:void(window.open(document.referrer.match(/h(.[^/]+)/)[0] + &quot;//&quot; + document.referrer.match(/:\/\/(.[^/]+)/)[1] + &quot;/SomeRelativePath/?SomeParam=SomeId&quot;));&quot;)">

  ☍</a>

   </div>

  </div>

  </div>

</a>