我正在使用FancyApps的Fancybox预览我网站上的内容。
<a href="#inline" class="various"><span class="info"></span></a>
<div id="inline" style="display:none;width:500px;">
<h2>Always enjoy the sunny days!</h2>
</div>
<script type="text/javascript">
$(document).ready(function() {
$(".various").fancybox({
maxWidth : 500,
autoSize : true,
closeClick : false,
openEffect : \'none\',
closeEffect : \'none\'
});
});
</script>
基本上这种方法运行正常,但在某种情况下我需要将我的网站重定向到安全的服务器,因此域名会发生变化。
示例:
https://secure-payment.com/relay/v2/relay.cgi/http://www.mydomain.com/checkout
当我使用链接触发Fancybox没有此页面时,我只是“无法加载请求的内容。请稍后再试。”
另外(我不知道它是否相关)我在页面底部运行下面的脚本,这是付款公司的要求。
//
// Variables used for searching
//
var relayurl = "https://relay.ditonlinebetalingssystem.dk/";
var relayurl_replace = "https://relay.ditonlinebetalingssystem.dk/relay/v2/relay.cgi/";
var baseurl = "";
function getURLParam(strParamName){
var strReturn = "";
var strHref = window.location.href;
if ( strHref.indexOf("?") > -1 ){
var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
var aQueryString = strQueryString.split("&");
for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){
var aParam = aQueryString[iParam].split("=");
strReturn = aParam[1];
break;
}
}
}
return unescape(strReturn);
}
//
// Replace all links to NOT use the relay-script when the user clicks on the links
//
function replaceRelayButtons(parent, startTimer) {
var aEls = parent.childNodes;
for (var i = 0, aEl; aEl = aEls[i]; i++) {
//
// Do recursive call
//
replaceRelayButtons(aEls[i]);
if (aEls[i].tagName == 'A' || aEls[i].tagName == 'a') {
if (aEls[i].href.indexOf(relayurl) == 0) {
aEls[i].href = aEls[i].href.replace(relayurl_replace, "");
aEls[i].href = aEls[i].href.replace(relayurl, "")
if (aEls[i].href.indexOf("http://") != 0) {
aEls[i].href = (baseurl + "/" + aEls[i].href);
}
}
}
if (baseurl.length > 0) {
if (aEls[i].tagName == 'IMG' || aEls[i].tagName == 'img') {
if (aEls[i].src.indexOf(relayurl) == 0 && aEls[i].src.indexOf(relayurl_replace) == -1) {
aEls[i].src = aEls[i].src.replace(relayurl, relayurl_replace + "/" + baseurl + "/");
}
}
}
}
//
// Now start the timer which runs this function again to fix all body elements that might not be loaded in the browser yet
//
if (startTimer) {
setTimeout("replaceRelayButtons(document.body, false)",1000)
setTimeout("replaceRelayForms()",1000)
}
}
//
// Replace all form actions to NOT use the relay-script when the user clicks on the links
//
function replaceRelayForms() {
for (i = 0; i < document.forms.length; i++) {
if (document.forms[i].action.indexOf(relayurl) == 0) {
document.forms[i].action = document.forms[i].action.replace(relayurl_replace, "");
document.forms[i].action = document.forms[i].action.replace(relayurl, "")
if (document.forms[i].action.indexOf("http://") != 0) {
document.forms[i].action = (baseurl + "/" + document.forms[i].action);
}
}
}
}
//
// Go and replace the urls and form actions
//
if (getURLParam('baseurl') != null) {
baseurl = getURLParam('baseurl')
}
replaceRelayButtons(document.body, true);
我可能做错了什么?这甚至可能吗?
答案 0 :(得分:0)
我认为没有太多错误,但您无法将HTTPS URL加载到HTTP网址中,因为它应该是一个安全的URL。这是因为如果URL是另一个域,fancybox会生成iFrame。
IE会显示错误,但Firefox会加载页面,尝试它,你会看到。
答案 1 :(得分:0)
我认为的问题“无法加载请求的内容。请稍后重试。”它与此线程https://stackoverflow.com/a/8509018/1055987的关系比您在安全服务器中的事实更多。
所以请尝试更改代码的这一部分
<div id="inline" style="display:none;width:500px;">
<h2>Always enjoy the sunny days!</h2>
</div>
到这个
<div style="display:none;">
<h2 id="inline" style="width:500px;">Always enjoy the sunny days!</h2>
</div>