Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
I have an expression as a link that I want to open as a new tab within the SAME window as opposed to opening a new browser window. Is that possible?
Here is my expression:
='ALM ' &'<url>linkurlhere=' & DEFECT_ID & ''
Only if your browser has a setting to force new links to open in a new tab. Qlikview can't force this behavior for opening links.
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:
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.
for example i don't think you want the 'window.open' and 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"//"%20+%20document.referrer.match(/:\/\/(.[^/]+)/)[1]%20+%20"/SomeRelativePath/?SomeParam=SomeId"));'
target="_self"
onclick="eval("javascript:void(window.open(document.referrer.match(/h(.[^/]+)/)[0] + "//" + document.referrer.match(/:\/\/(.[^/]+)/)[1] + "/SomeRelativePath/?SomeParam=SomeId"));")"
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"//"%20+%20document.referrer.match(/:\/\/(.[^/]+)/)[1]%20+%20"/SomeRelativePath/?SomeParam=SomeId"));'
target="_self"
onclick="eval("javascript:void(window.open(document.referrer.match(/h(.[^/]+)/)[0] + "//" + document.referrer.match(/:\/\/(.[^/]+)/)[1] + "/SomeRelativePath/?SomeParam=SomeId"));")">
☍</a>
</div>
</div>
</div>
</a>