2015-10-12 7 views
1

У нас есть форма для нашего программного обеспечения для автоматизации маркетинга (стороннего), которое вызывается на микросайте в iframe ... Однако в настоящее время он открывает ссылку в iframe, а не родительское окно ... Я думаю, что знаю, как это исправить, но я хочу с вами проверить, что код onclick будет работать, прежде чем передать его маркетинговой компании.Кнопка onclick должна быть открыта в родительском окне

Я использую следующий код:

<style> 
body { 
background: #fff; 
color:#000; 
font-family: ‘open sans’, sans-serif; 
} 
input[type=text], input[type=button] { 
-moz-border-radius: 10px; 
-webkit-border-radius: 10px; 
-khtml-border-radius: 10px; 
border-radius: 5px; 
height: 40px; 
border: 1px solid #f1f1f1; 
} 
input[type=button] { 
background-color: #F04D1D; 
height: 45px; 
font-weight: bold; 
color: #FFF; 
font-size: 16px; 
} 
</style> 
<table style="width: 300px; background-color: rgb(255, 255, 255);"> 
    <tbody> 
     <tr> 
      <td style="text-align: center;"><font color="#f04d1d"><strong><span style="font-family: '‘open sans’', sans-serif, ';'; font-size: 24px;">GET YOUR CODE&nbsp;</span></strong></font></td> 
     </tr> 
     <tr> 
      <td><span style="color: rgb(242, 242, 242);">&nbsp;</span></td> 
     </tr> 
     <tr> 
      <td><br> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <table> 
       <tbody> 
        <tr> 
         <td>First Name*&nbsp;</td> 
         <td><span style="color: rgb(0, 0, 0);">Last Name*</span></td> 
        </tr> 
        <tr> 
         <td><input name="First Name" id="CaptureControl_5_" type="text" value=""></td> 
         <td><input name="Last Name" id="CaptureControl_6_" type="text" value=""></td> 
        </tr> 
       </tbody> 
      </table> 
      </td> 
     </tr> 
     <tr> 
      <td><br> 
      </td> 
     </tr> 
     <tr> 
      <td><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">Company Name*</span></td> 
     </tr> 
     <tr> 
      <td><input name="Company Name" id="CaptureControl_3_" type="text" value="" style="width: 300px;"></td> 
     </tr> 
     <tr> 
      <td><br> 
      </td> 
     </tr> 
     <tr> 
      <td><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">Your Email*</span></td> 
     </tr> 
     <tr> 
      <td><input name="Email Address" id="CaptureControl_4_" type="text" value="" style="width: 300px;"><br> 
      </td> 
     </tr> 
     <tr> 
      <td><span style="color: rgb(242, 242, 242);">&nbsp;</span></td> 
     </tr> 
     <tr> 
      <td><input id="CaptureControlButton_6_" type="button" value="Send" target="_parent" onclick="try{CaptureFormData(0);}catch(e){}" style="width: 300px;"><br> 
      <div id="errorMessage" style="width:135;height:10;font-family:Verdana;font-size:8pt;color:red;">Error Message Area</div> 
      <div id="successMessage" style="width:135;height:10;font-family:Verdana;font-size:8pt;color:#000000;">Success Message Area</div> 
      </td> 
     </tr> 
     <tr> 
      <td><span style="color: rgb(0, 0, 0); font-size: 10px;"><em>*Required field</em></span></td> 
     </tr> 
    </tbody> 
</table> 
<br> 
<br> 

Это строка кода, который я хочу, чтобы вызвать положительный результат, чтобы открыть в родительском окне:

<td><input id="CaptureControlButton_6_" type="button" value="Send" target="_parent" onclick="try{CaptureFormData(0);}catch(e){}" style="width: 300px;"><br> 

Я добавил Target="_parent" но это не удалось открыть в родительском окне ... Что заставляет меня думать, что этот бит:

onclick="try{CaptureFormData(0);}catch(e){}" 

должно содержать что-то вроде:

onclick="parent.window.open(try{CaptureFormData(0);}catch(e){})" 

Будет ли это решить мою проблему?

Просто добавить - Скрипт для формы здесь:

<script>try 
{ 
var lastSubmission = null; 
var ContactId = 0; var _wow; 
var CaptureId = 12; 
var PageId = 0; 
var EmailId = 0; 
var CampaignName = ''; 
var IsNewContact = false; 
var IsTest = false; 
var IsUserValid; 
var gatorLeadsTrackingOptions = 0; 
}catch(e){} 
errorMessage.innerHTML =''; 
successMessage.innerHTML =''; 
function GatorTrim(x) { return x.replace(/^\s+|\s+$/gm,'');};function CaptureFormData() 
{ 
if(lastSubmission != null){ 
secondsSinceLastSubmission = (new Date().getTime() - lastSubmission)/1000 
if(secondsSinceLastSubmission < 1) { 
    return; 
} 
} 
var Value; 
var CheckSelection = false; 
var result; 
var ButtonId = 6; 
var submissionData = { 
captureId: CaptureId, 
buttonId: ButtonId, 
pageId: PageId, 
emailId: EmailId, 
campaignName: CampaignName, 
contactId: ContactId, 
isTest: IsTest, 
sendNotificationEmail: false, 
passGatorLeadsTrackingDataInRedirectUrl: true, 
onlyOneEntry: false, 
displayName: 'Volo Not got a code', 
emailAddress: '', 
values: [], 
gatorLeadsTrackingOptions: gatorLeadsTrackingOptions 
}; 
document.getElementById('CaptureControlButton_6_').disabled = true; 
document.getElementById('CaptureControlButton_6_').value = 'Submitting, please wait'; 
setTimeout(function() {try{errorMessage.innerHTML = ''; 
successMessage.innerHTML = ''; 
Value = getObject('CaptureControl_4_').value; 
if(Value==''){errorMessage.innerHTML += 'The email address field is missing<br>'; 
document.getElementById('CaptureControlButton_6_').disabled = false; 
document.getElementById('CaptureControlButton_6_').value = 'Send'; 
} 
Value = getObject('CaptureControl_5_').value; 
if(Value==''){errorMessage.innerHTML += 'Mandatory fields missing<br>'; 
document.getElementById('CaptureControlButton_6_').disabled = false; 
document.getElementById('CaptureControlButton_6_').value = 'Send'; 
} 
Value = getObject('CaptureControl_3_').value; 
if(Value==''){errorMessage.innerHTML += 'The field name company name is missing<br>'; 
document.getElementById('CaptureControlButton_6_').disabled = false; 
document.getElementById('CaptureControlButton_6_').value = 'Send'; 
} 
if(errorMessage.innerHTML != ''){return;} 
Value = GatorTrim(getObject('CaptureControl_4_').value); 
submissionData.emailAddress = Value; 


Value = GatorTrim(getObject('CaptureControl_5_').value); 
if (Value != undefined) {submissionData.values.push({controlId: 5, value: Value }); 
} 


Value = GatorTrim(getObject('CaptureControl_6_').value); 
if (Value != undefined) {submissionData.values.push({controlId: 6, value: Value }); 
} 


Value = GatorTrim(getObject('CaptureControl_3_').value); 
if (Value != undefined) {submissionData.values.push({controlId: 3, value: Value }); 
} 


var result = WebCapture.Submit(JSON.stringify(submissionData)); 
var response = JSON.parse(result.value); 
if(response.success==false){errorMessage.innerHTML = 'You have already submitted.'; 
document.getElementById('CaptureControlButton_6_').disabled = false; 
document.getElementById('CaptureControlButton_6_').value = 'Send'; 
return;} 
trackingData = response.trackingData; 
document.getElementById('CaptureControlButton_6_').disabled = false; 
document.getElementById('CaptureControlButton_6_').value = 'Send'; 
successMessage.innerHTML = 'Thank you for submitting&nbsp;'; 
if(typeof _wow != 'undefined' && response.trackWowSubmit){ 
trackUrlInWow(response.wowUrl);} 
var submitRedirectUrl = 'http://takeflight.volocommerce.com/multichannel-selling/' 
if(submitRedirectUrl.indexOf('?') == -1){ 
submitRedirectUrl = submitRedirectUrl + '?'; 
}else{ 
submitRedirectUrl = submitRedirectUrl + '&'; 
} 

submitRedirectUrl += 'gator_td=' + trackingData; 
window.location.href=submitRedirectUrl; 
}catch(e){if(IsTest) { alert(e.message); } else { alert('An error has occurred submitting the data. Please try again.'); } 
document.getElementById('CaptureControlButton_6_').disabled = false; 
document.getElementById('CaptureControlButton_6_').value = 'Send'; 
} 
lastSubmission = new Date().getTime(); 
}, 100); 

}</script> 
+0

http://stackoverflow.com/questions/1037839/how-to-force-link-from-iframe-to-be-opened-in-the-parent-window –

+0

Вы пробовали добавить 'base' как ответ подсказывает? –

ответ

0

Я обошел это, перенаправив форму в php-скрипт в том же домене, который затем перенаправляется на страницу, предназначенную (в том же домене) для открытия в родительском окне.

1

Фактическое изменение местоположения происходит внутри JavaScript, довольно много в конце:

window.location.href=submitRedirectUrl; 

Чтобы сделать это в верхнем кадре (т.е. обволакивающей странице) изменить его на

window.top.location.href = submitRedirectUrl; 

Обратите внимание, что это будет o если и родительская страница, и страница внутри iframe происходят из одного домена из-за same-origin-policy

+0

Просто отметить - я добавил скрипт формы сейчас :) –

+0

Урх ... трудно читать без хорошего отступа, но я поменяю свой ответ соответственно – Sorcy

+0

Спасибо sir :) Это была отличная помощь! –