3

これは私の最後の質問に似ていますが、問題は異なります。すべてのjavascript関数に個別のjavascriptファイルを使用しています。そのファイルはメインウィンドウから呼び出され、別のインスタンスでは子ウィンドウからも呼び出されます。私のコードは、IE9と10を除くすべてのブラウザーで動作します。以前のバージョンのIEはテストしていません。

IEによると、問題のある行はwindow.opener.savetoparent($targetval); 私の以前のコードでopener.savetoparent($targetval);あり、その前は、子から直接親に直接変更を加えただけです。また、別の記事で提案されているように、動作を変更せずにIEに入り、保護モードを有効にしました。 Savetoparent()は子と親の両方で使用できるため、親で実行するにはオープナーで呼び出す必要があります。

私が得ているエラーは次のとおりUnable to get property 'savetoparent' of undefined or null reference. です。コードは次のとおりです。

function saveandclose($wintype, $propid) {

switch($wintype) {
    case 'ccdetail':
        var $targetval = $('#cc-total').val();
        var $fieldname = 'closingcoststotal';
        break;
}

window.opener.savetoparent($targetval);
closewindow();
}

安全な親関数は次のとおりです。

function savetoparent($targetval) {
    $('#' + $parentloc).val($targetval);
    var $name = $('#' + $parentloc).attr("name");
    var $rawtargetval = jsstrtonum($targetval);
    processrvsave($propertyid, $name, $rawtargetval);   
    calcrvtotals();
}

あなたがこれに当てることができるどんな光でも大いにありがたいです。

このようにウィンドウが起動します

if(window.showModalDialog) { 
  window.showModalDialog($childname + '.php?ploc=' + $parentloc + '&propid=' + $propid, '', 'dialogWidth: ' + $winwidth + 'px; dialogHeight: ' + $winheight + 'px;') 
} 
else { 
  window.open($childname + '.php?ploc=' + $parentloc + '&propid=' + $propid, '', 'width=' + $winwidth + ', height=' + $winheight + ', modal=yes'); 
} 
4

1 に答える 1

2

showModalDialogにはオープナーはありません。returnValueを使用する

また、window.openには長年モーダルパラメータがありませんでした。

returnValueの使用方法は次のとおりです

if(window.showModalDialog) { 
  $targetval = window.showModalDialog($childname + '.php?ploc=' + $parentloc + '&propid=' + $propid, 
    window,
    'dialogWidth: ' + $winwidth + 'px; dialogHeight: ' + $winheight + 'px;'))
  if(targetval) savetoparent($targetval);
} 
else { 
  window.open($childname + '.php?ploc=' + $parentloc + '&propid=' + $propid, '', 'width=' + $winwidth + ', height=' + $winheight + ', modal=yes'); 
} 

それから

function saveandclose($wintype, $propid) {
  var $targetval ="";
  switch($wintype) {
    case 'ccdetail':
      $targetval = $('#cc-total').val();
      // var $fieldname = 'closingcoststotal'; I do not see this used anywhere
      break;
  }

  if (window.opener) window.opener.savetoparent($targetval);
  else returnValue = $targetval;
  closewindow();
}
于 2012-12-29T17:10:47.913 に答える