none
IE11について RRS feed

  • 質問

  • 過去に、IE6で動作検証を行い納品したWEBの資材発注システムがあるのですが

    IE11で正常に動作しない現象がありました。

    下記の()でエラーとなっていて、[]に変更しなければいけないのは理解できるのですが

    IE8で動作していて、IE11で動作しない理由が分かりません。

    どなたか分かりますでしょうか。

    strPrdCd = form1.PRDCT_CD_N(lngRow - 1).value;

    function doGetMail(  lngRow  )
    {
     var strPrdCd = ""
     var lngRowCount = form1.ROWNUM.value;

     if (lngRowCount == 1 )
     {
      strPrdCd = form1.PRDCT_CD_N.value;
     }
     else
     {
     
      strPrdCd = form1.PRDCT_CD_N(lngRow - 1).value;
     }

     window.open ("show.pl?PRDCD=" + strPrdCd , "newwindow", "height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")
    }

    2014年3月12日 7:02

すべての返信

  • 情報が少なすぎ、不明点が多すぎです。

    > IE11で正常に動作しない現象がありました。

    「正常に動作しない現象」とは具体的にどうなるのですか? 正常に動作するとどういう結果になって、ie11 ではどうなるのですか?

    > 下記の()でエラーとなっていて、[]に変更しなければいけないのは理解できるのですが

    「下記の()」とはどこのことを言ってますか? エラーメッセージはどうなりますか?

    「[]に変更」とはどういうことですか? どこをどのように変更するのですか? 変更すれば動くのですか?

    アップされているスクリプトのコードは省略されすぎていて意味不明です。問題を再現できる必要最小限に、ただしコピペすれば動く程度までに、コードを絞ってアップできませんか?

    > window.open ("show.pl?PRDCD=" + strPrdCd , "newwindow", "height=100, width=400,

    「show.pl」と言うのは見たことがないのですが、Web アプリケーションは何ですか?

    2014年3月12日 8:04
  • そのウェブページはie11でも「互換表示設定」にて追加されてますか。

    全く関係ないかもしれませんが,念のため。

    2014年3月12日 10:36
  • 情報不足ですみません。

    >「正常に動作しない現象」とは具体的にどうなるのですか? 正常に動作するとどういう結果になって、ie11 ではどうなるのですか?

    正常に動作する場合、ボタンを押下するとポップアップで商品詳細の画面が表示されます。

    IE11ですと、ボタンを押下しても何もなりません。「F12 developer tools」に下記のエラーが表示されます。

    SCRIPT3: メンバーが見つかりません。

    >「下記の()」とはどこのことを言ってますか? エラーメッセージはどうなりますか?

    form1.PRDCT_CD_N(lngRow - 1).value

    JavaScriptのため配列は()ではなく[]が正しい文法ですよね?

    []に変更すると上記のポップアップ画面が表示されます。

    >「show.pl」と言うのは見たことがないのですが、Web アプリケーションは何ですか?

    PerlとJavaScriptを使用しています。

    2014年3月12日 12:27
  • 「互換表示設定」は追加しておりません。
    2014年3月12日 12:27
  • 返答いただきましたが、依然としてよく分かりません。先に以下のことをお願いしていますが、できませんか?

    > アップされているスクリプトのコードは省略されすぎていて意味不明です。
    > 問題を再現できる必要最小限に、ただしコピペすれば動く程度までに、コー
    > ドを絞ってアップできませんか?

    IE8 では使えていた JavaScript の構文が IE11 で使えなくなったのが原因と想像していますが、アップされているコードでは多数の変数の定義が不明で何が何だか分かりません。

    ボタンクリックで doGetMail が起動されるのだろうと想像していますが、そういう情報すら書いてありません。

    lngRow とか PRDCT_CD_N とか ROWNUM なども何だか分かりません。

    2014年3月12日 14:56
  • Perlのソースが下記となります。情報は足りてますでしょうか。

    10年前に作成されたもので、把握しきれていなくて申し訳ありません。

    require "cgilib.pl";

    use strict;
    use DBI;

    #1ページの最大行数
    my $ROWS_PER_PAGE = 10;

    my %dataDic=();
    &readData(*data);
    %dataDic =  &parse_Data(*data);

    my $pagenum = 0;
    my $currow = 0;
    my $curpage = 1;
    my $numall = 0;
    my $searchnote = "";
    my $funcname = "";
    my $funcname2 = "";
    my $comm = "";
    my $searchstyle = "";
    my $selectSQL = "";
    my $insertSQL = "";
    my $selectwhere = "";
    my $selectlimit = "";
    my $imagepath = "../images/";
    my $cookiename;
    my $cookiepath;
    my $cgibinpath = "/hp/cgi-bin";

    my $funmame2;
    my $imagepath1;
    my $imagepath2;

    my $orderpath = "";
    my $ordername = "";
    my %orderinfo = ();

    my $prdcntshow = 0;
    my $prdvalshow = 0;

    my $fromnum = 0;

    my $HpCookie;

    my %hpconfig;
    %hpconfig = &getconfig();

    my $DebugSign;
    $DebugSign = $hpconfig{"DEBUG"}||"FALSE";

    my $DbName = $hpconfig{"DATABASE"}||"TEST";
    my $MyUsrName = $hpconfig{"USER"};
    my $MyUsrPass = $hpconfig{"PASSWORD"};

    my $dbh;
    my $sth;
    my $rv;
    my @row = ();

    my %manageinf;
    %manageinf = &GetPicPath();

    $HpCookie = $ENV{"HTTP_COOKIE"}||$ENV{"COOKIE"}||"";
    if ($HpCookie eq "") {
     $cookiename = &SetCookie();
    }
    else
    {
     $cookiename = &GetCookieName();
     %orderinfo = &GetOrderInfo();
    }

    $funcname = $dataDic{"FUNC"}||'';
    $funcname2 = $dataDic{"FUNC2"}||'';

    if ($funcname eq "STYLESEARCH" ) {
     $searchnote = $dataDic{"SEARCHNOTE"}|| '';
     if ($searchnote eq "" ) {
      $selectwhere = "";
     }
     else{
      $selectwhere = "AND MST_PRD_CAT.CAT_NAME =  '$searchnote'  ";
     }
    }

    if ($funcname eq "CODESEARCH" ) {
     $searchnote = $dataDic{"SEARCHNOTE"}|| '';
     if ($searchnote eq "" ) {
      $selectwhere = "";
     }
     else{
      $selectwhere = "AND MST_PRODUCT.PRDCT_CD like '$searchnote%'";
     }
    }

    if ($funcname eq "NAMESEARCH" ) {
     $searchnote = $dataDic{"SEARCHNOTE"}|| '';
     if ($searchnote eq "" ) {
      $selectwhere = "";
     }
     else{
      $searchnote =~ s/\\/\\\\\\\\/g;
      $selectwhere = ' AND MST_PRODUCT.PRDCT_NM like "%'.$searchnote.'%"';
     }
    }

    $curpage  = $dataDic{"CURPAGE"}|| 1;
    $pagenum = $dataDic{"PAGENUM"} || 0;

    if ($funcname2 eq "") {

     $numall = &GetCount();
     $pagenum =int($numall/$ROWS_PER_PAGE);
     if($numall%$ROWS_PER_PAGE != 0)
     {
      $pagenum++;
     }
    }


    if ($funcname2 eq "INSERT") {
     my $prdctcount = 0;
     my  $prdstocknum = 0;
     my $prdctcd = $dataDic{"PRDCT_CD"}||'';
     $prdctcount = $dataDic{"PRDCOUNT"}|| 0;
     unless ($prdctcount =~ /^\d+$/) {
      $prdctcount = 0;
     }
     else
     {
      if ( $prdctcount != 0 ){
      
       my %params = (
        COUNT => $prdctcount,
        PRDCT_CD => $prdctcd,
       );
       &OrderInsert(\%params);
      }
     }
    }

    if ($funcname2 eq "PREVPAGE") {
     
     $curpage-- if ($curpage != 1 );

    }

    if ($funcname2 eq "NEXTPAGE") {

     $curpage++ if ($curpage < $pagenum) ;
    }

    print "Content-type: text/html; charset=utf-8\n\n";

    print "<html>";

    print "<head>";
    print '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
    print "<title>リスト</title>";
    print "</head>";

    print '<body BGCOLOR="#ffffff" TEXT="#cc0000" LINK="#cc0000" VLINK="#cc0000" background="../image/bg.gif" >';


    print '<TABLE BGCOLOR="#CC0000" cellspacing="1" cellpadding="2" border="0" align="center">';

    print '<FORM NAME = "form1" id ="LISTFORM"  method="POST" ACTION = "list.pl">';
    print '<script language="javascript" src="../script/list.js?20120803"></script>';
    print '<TR>';
    print ' <TD align="center" width="50"  BGCOLOR="#EEAAEE"><FONT SIZE=3 COLOR="#ffffff">画像</FONT></TD>';
    print ' <TD align="center" width="50"  BGCOLOR="#EEAAEE"><FONT SIZE=3 COLOR="#ffffff">品番</FONT></TD>';
    print ' <TD align="center" width="300" BGCOLOR="#EEAAEE"><FONT SIZE=3 COLOR="#ffffff">品 名</FONT></TD>';
    print ' <TD align="center" width="50"  BGCOLOR="#EEAAEE"><FONT SIZE=3 COLOR="#ffffff">問合せ先</FONT></TD>';
    print ' <TD align="center" width="50"  BGCOLOR="#EEAAEE"><FONT SIZE=3 COLOR="#ffffff">単価</FONT></TD>';
    print ' <TD align="center" width="50"  BGCOLOR="#EEAAEE"><FONT SIZE=3 COLOR="#ffffff">在庫数</FONT></TD>';
    print ' <TD align="center" width="50"  BGCOLOR="#EEAAEE"><FONT SIZE=3 COLOR="#ffffff">単位</FONT></TD>';
    print ' <TD align="center" width="50"  BGCOLOR="#EEAAEE"><FONT SIZE=3 COLOR="#ffffff">発注上限</FONT></TD>';
    print ' <TD align="center" width="50"  BGCOLOR="#EEAAEE"><FONT SIZE=3 COLOR="#ffffff">発注数</FONT></TD>';
    print ' <TD align="center" width="50"  BGCOLOR="#EEAAEE"><FONT SIZE=3 COLOR="#ffffff">金額</FONT></TD>';
    print ' <TD align="center" width="50"  BGCOLOR="#EEAAEE"><FONT SIZE=3 COLOR="#ffffff">発注</FONT></TD>';
    print '</TR>';

    if ($pagenum != 0 ) {
     
     $fromnum = ($curpage-1)*10 ;
     $selectlimit = " LIMIT ".$fromnum.",".$ROWS_PER_PAGE ;
     
     unless($dbh = DBI->connect("DBI:mysql:$DbName:127.0.0.1",$MyUsrName,$MyUsrPass) )
     {
      &DataBaseError();

     }
     
     #
     $selectSQL = "";
     $selectSQL = $selectSQL."select MST_PRODUCT.PRDCT_CD,MST_PRD_CAT.CAT_NAME,MST_PRODUCT.DISP_SEQ, ";
     $selectSQL = $selectSQL."MST_PRODUCT.PRDCT_NM,MST_PRODUCT.PRDCT_ST,MST_PRODUCT.PRC_SELL, ";
     $selectSQL = $selectSQL."MST_PRODUCT.UNIT,MST_PRODUCT.WEIGHT,MST_PRODUCT.LOT_CNT, ";
     $selectSQL = $selectSQL."MST_PRODUCT.PRC_RES1,MST_PRODUCT.PRC_RES2,MST_PRODUCT.STOCK_CNT,";
     $selectSQL = $selectSQL."MST_PRODUCT.IMG_NAM1,MST_PRODUCT.IMG_NAM2 , ";
     $selectSQL = $selectSQL."MST_PRODUCT.ORDER_MAX,MST_PRODUCT.STOCK_LMT,MST_PRODUCT.CHG_NAM1,MST_PRODUCT.CHG_NAM2,";
     $selectSQL = $selectSQL."MST_PRODUCT.CHG_TEL,MST_PRODUCT.CHG_MAIL,MST_PRODUCT.FLG_MAIL ";

     $selectSQL = $selectSQL." FROM MST_PRODUCT,MST_PRD_CAT ";
     $selectSQL = $selectSQL."WHERE MST_PRODUCT.CAT_CODE =MST_PRD_CAT.CAT_CODE ".$selectwhere;
     $selectSQL = $selectSQL." ORDER BY MST_PRODUCT.CAT_CODE,MST_PRODUCT.DISP_SEQ,MST_PRODUCT.PRDCT_CD ".$selectlimit;
     
     unless($sth = $dbh->prepare($selectSQL))
     {
      &DataBaseError();
     }
     unless($rv = $sth->execute())
     {
      &DataBaseError();
     }


     $currow = 0;

     while (@row = $sth->fetchrow_array) {
      
      if ($currow > 0) {
       print "</TD></TR>"
      }
      $currow = $currow + 1;

      $row[13] = &trim($row[13]);
      if ($row[12] =~ /\./)
      {
         my $imagepathtmp = $manageinf{"IMG_DIR1"};
       $imagepath1 = $imagepathtmp.$row[12];
      }
      else
      {
        $imagepath1 = $manageinf{"IMG_DIR1"}.$row[12].".jpg";
      } 
      if ($row[13] =~ /\./)
      {
         $imagepath2 = $manageinf{"IMG_DIR2"}.$row[13];
      }
      else
      {
        $imagepath2 = $manageinf{"IMG_DIR2"}.$row[13].".jpg";
      }
      
      my $strstockcnt;
      if ($row[11] <=0 ) {
       $strstockcnt = '品切れ';
      }
      else
      {
       $strstockcnt = $row[11];
      }
      print '<TR>';

      print '<TD align="center" BGCOLOR="#ffffff"><a href='.$imagepath1.' target="ZOOM">';
      print '<img src='.$imagepath2.' border="0"></a></TD>';
      print ' <TD align="center" BGCOLOR="#ffffff"><FONT SIZE=2 COLOR="#000000">'.$row[0].'</FONT></TD>';
      print ' <TD align="left"   BGCOLOR="#ffffff"><FONT SIZE=2 COLOR="#000000">'.$row[3].'</FONT></TD>';
      print '<TD align="center" BGCOLOR="#ffffff"> <INPUT TYPE="button" NAME="GetMail" onClick = "doGetMail('.$currow.')" VALUE="表示"></TD>';
      print ' <TD align="right"  BGCOLOR="#ffffff"><FONT SIZE=2 COLOR="#000000">'.$row[5].'</FONT></TD>';
      print ' <TD align="right"  BGCOLOR="#ffffff"><FONT SIZE=2 COLOR="#000000">'.$strstockcnt.'</FONT></TD>';
      print ' <TD align="center" BGCOLOR="#ffffff"><FONT SIZE=2 COLOR="#000000">'.$row[6].'</FONT></TD>';
      print ' <TD align="center" BGCOLOR="#ffffff"><FONT SIZE=2 COLOR="#000000">'.$row[14].'</FONT></TD>';


      $prdcntshow = $orderinfo{$row[0]}||0;

      if ($prdcntshow != 0) {
       print ' <TD align="center" BGCOLOR="#ffffff"><INPUT TYPE="TEXT" NAME="PRDCOUNT_N" SIZE=7 VALUE = "'.$prdcntshow.'"></TD>';
      }
      else
      {
       
       print ' <TD align="center" BGCOLOR="#ffffff"><INPUT TYPE="TEXT" NAME="PRDCOUNT_N" SIZE=7 VALUE = ""></TD>';
      }
      print ' <TD align="center" BGCOLOR="#ffffff">';
      print ' <input type="hidden" name="PRDCT_CD_N" value = "'.$row[0].'">';
      print ' <input type="hidden" name="SEARCHNOTE_N" value="'.$searchnote.'">';
      print ' <input type="hidden" name="FUNC2_N" value="INSERT">';
      print ' <input type="hidden" name="FUNC_N" value="'.$funcname.'">';
      print ' <input type="hidden" name="CURPAGE_N" value="'.$curpage.'">';
      print ' <input type="hidden" name="PAGENUM_N" value="'.$pagenum.'">';
      print ' <input type="hidden" name="ORDER_MAX" value="'.$row[14].'">';
      print ' <input type="hidden" name="STOCK_CNT" value="'.$row[11].'">';
      print ' <input type="hidden" name="CHG_NAM1" value="'.$row[16].'">';
      print ' <input type="hidden" name="CHG_NAM2" value="'.$row[17].'">';
      print ' <input type="hidden" name="CHG_TEL" value="'.$row[18].'">';
      if ($prdcntshow != 0) {
       $prdvalshow = $prdcntshow * $row[5];
       print ' <FONT SIZE=2 COLOR="#000000">'.$prdvalshow.'</FONT></TD>';
       
      }
      else
      {
        print ' <FONT SIZE=2 COLOR="#000000">'."".'</FONT></TD>';
      }

      print ' <TD align="center" BGCOLOR="#ffffff">';
      print ' <INPUT TYPE="button" NAME="Order" onClick = "doOrder('.$currow.')" VALUE="発注">';
      
     }
     if ($currow > 0 ) {
      print ' <input type="hidden" name="ROWNUM" value="'.$currow.'">';
      print ' <input type="hidden" name="PRDCT_CD" value = "">';
      print ' <input type="hidden" name="SEARCHNOTE" value="">';
      print ' <input type="hidden" name="FUNC2" value="INSERT">';
      print ' <input type="hidden" name="FUNC" value="">';
      print ' <input type="hidden" name="PRDCOUNT" value="">';
      print ' <input type="hidden" name="CURPAGE" value="'.$curpage.'">';
      print ' <input type="hidden" name="PAGENUM" value="'.$pagenum.'">';
      print '</TD></TR>';
     }
     
     $dbh->disconnect();
    }

    print '</FORM>';

    if ($pagenum == 0) {
     print '<TABLE border="0" cellspacing="1" cellpadding="2" border="0" align="center" >';
     print '<TR><TD  width="750"  >';
     print '該当データが見つかりません。';
     print '</td></tr>';
     print   '</table>';

    }
    else
    {
     print '<TR  >';
     print '  <FORM name = "form2" method="POST" ACTION = "list.pl">';
     print ' <TD  colspan="10" align="right"  BGCOLOR="#EEAAEE">';
     print '  <input type="hidden" name="SEARCHNOTE" value='.$searchnote.'>';
     print '  <input type="hidden" name="FUNC2" value="PREVPAGE">';
     print '  <input type="hidden" name="FUNC" value='.$funcname.'>';
     print '  <input type="hidden" name="CURPAGE" value='.$curpage.'>';
     print '  <input type="hidden" name="PAGENUM" value='.$pagenum.'>';
     print '  <INPUT TYPE="submit" NAME="back" VALUE="前 へ">';
     print '  </TD></FORM>';
     print '  <FORM name = "form3" method="POST" ACTION = "list.pl">';
     print '  <TD  align="right" BGCOLOR="#EEAAEE">';
     print '  <input type="hidden" name="SEARCHNOTE" value='.$searchnote.'>';
     print '  <input type="hidden" name="FUNC2" value="NEXTPAGE">';
     print '  <input type="hidden" name="FUNC" value='.$funcname.'>';
     print '  <input type="hidden" name="CURPAGE" value='.$curpage.'>';
     print '  <input type="hidden" name="PAGENUM" value='.$pagenum.'>';
     print '  <INPUT TYPE="submit" NAME="back" VALUE="次 へ">';
     print ' </TD>';
     print ' </FORM></TR>';
    }

    print '</TABLE>';

    print '<FORM name = "form4" id="form4" TARGET = TANTOFORM  method="POST" ACTION = "show.pl">';
    print '<input type="hidden" name="PRDCD" value="PA001">';
    print '</FORM >';


    print '</BODY>';
    print '</HTML>';

    exit();


    ;# 追加
    sub OrderInsert {
     my ($params) =  @_ if @_;
     my $prdctcount = $params->{"COUNT"} ;
     my $prdctcd = $params->{"PRDCT_CD"};
     $orderinfo{$prdctcd} = $prdctcount;
     &WriteOrder;
    }

    sub GetCount{
     
     $dbh = DBI->connect("DBI:mysql:$DbName:127.0.0.1",$MyUsrName,$MyUsrPass)
      or die "can not connect database $DbName \n";

     $selectSQL = "";
     $selectSQL = $selectSQL."select count(*)   FROM MST_PRODUCT,MST_PRD_CAT ";
     $selectSQL = $selectSQL."WHERE MST_PRODUCT.CAT_CODE =MST_PRD_CAT.CAT_CODE ".$selectwhere;

     unless($sth = $dbh->prepare($selectSQL))
     {
      &DataBaseError();
     }
     unless($rv = $sth->execute())
     {
      &DataBaseError();
     }
     @row = $sth->fetchrow_array;
     $dbh->disconnect();
     return $row[0];

    }

    sub GetOrderInfo{
     my $sessionid = &GetCookieName();
     my %order_info = ();
     my $orderline;
     my @orderlist;
     my $sessionfullpath = './order_tmp/'.$sessionid.'.log.cgi';
     unless (-e $sessionfullpath) {
      open (SESSIONFILE,">$sessionfullpath");
      close (SESSIONFILE);
     }
     else
     {
      open (SESSIONFILE,"$sessionfullpath");
      while ($orderline = <SESSIONFILE> ) {
       chop($orderline);
       @orderlist = split(/,/,$orderline);
       $order_info{$orderlist[0]} = $orderlist[1];
      }
      close(SESSIONFILE);
     }
     return %order_info;
    }

    sub WriteOrder{
     my $sessionid = &GetCookieName();
     
     my $sessionfullpath = './order_tmp/'.$sessionid.'.log.cgi';
     my $prdcd;
     my $prdnum;
     my $outstr;

     open (SESSIONFILE,">$sessionfullpath");
     foreach $prdcd (sort keys(%orderinfo))
     {
       $prdnum = $orderinfo{$prdcd};
      $outstr = $prdcd.",".$prdnum;
      print SESSIONFILE ( $outstr."\n");
     }

     close (SESSIONFILE);
     
     return 1;

    }

    sub GetPicPath{

     my %minf=();

     unless($dbh = DBI->connect("DBI:mysql:$DbName:127.0.0.1",$MyUsrName,$MyUsrPass) )
     {
      &DataBaseError();
     }

     $selectSQL = "";
     $selectSQL = $selectSQL."select MAIL_ADD,IMG_DIR1,IMG_DIR2  FROM MANAGE_INF ";

     unless($sth = $dbh->prepare($selectSQL))
     {
      &DataBaseError();
     }
     
     unless($rv = $sth->execute())
     {
      &DataBaseError();
     }
     if(@row = $sth->fetchrow_array){
      %minf = (
       "MAIL_ADD" => $row[0],
       "IMG_DIR1" => $row[1],
       "IMG_DIR2" => $row[2],
       );
     }
     if (%minf < 1) {
       %minf = (
       "MAIL_ADD" => $hpconfig{"MAIL_ADDRESS"}||"",
       "IMG_DIR1" => $hpconfig{"IMG_DIR1"}||"",
       "IMG_DIR2" => $hpconfig{"IMG_DIR2"}||"",
       );
     }
     $dbh->disconnect();
     return %minf;
    }

    sub SetCookie{
     my $addr = $ENV{REMOTE_ADDR} || '';
     $addr =~ s/\.//g;
     my $HpSessionId = join("", abs($$), time, $addr);
     my $cookie_header = 'HPSESSIONID= '.$HpSessionId;
     print "Set-Cookie: $cookie_header \n"; 
     return $HpSessionId;
    }

    sub GetCookieName{
     my $pair;
     my @pairs;
     my $name;
     my $value;
     @pairs = split(/; /, $ENV{'HTTP_COOKIE'}||$ENV{'COOKIE'});
     foreach $pair (@pairs){
       ($name, $value) = split(/=/, $pair);
       $value =~ tr/+/ /;
       $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
       if ($name == "HPSESSIONID") {
        return $value;
       }
     }
     return "";

    }

    sub DataBaseError()
    {
     my %errparm = @_ if @_;
     my $strSQL  = $errparm{"SQL"}||"";
     my $strComm = $errparm{"COMMAND"}||"";
     my $ErrCode = $errparm{"ERRORCODE"}||"";
     my $ErrMess = $errparm{"ERRORMESS"}||"";

     my $locday ;
        my $locmonth;
        my $locyear;
        my $lochour;
        my $locsec;
        my $locmin;
       
        ($locsec,$locmin,$lochour,$locday, $locmonth, $locyear) = (localtime)[0,1,2,3,4,5];
     $locyear = $locyear + 1900;
        my $errortime ;
        $errortime  = sprintf("%04d/%02d/%02d %02d:%02d:%02d", $locyear,$locmonth,$locday,$lochour,$locsec,$locmin);

     if ($DebugSign eq "TRUE") {
      open ERRORFILE , ">>error.log.cgi";

      print ERRORFILE "POSITION: list.pl   \n",
      print ERRORFILE "TIME:     [".$errortime."] \n",
      print ERRORFILE "SQL:      ".$strSQL."\n";
      print ERRORFILE "COMMAND:  ".$strComm."\n";
      print ERRORFILE "ERRCODE:  ".$ErrCode."\n";
      print ERRORFILE "ERRMESS:  ".$ErrMess."\n\n";

      close ERRORFILE;
     }
      
     print "Content-type: text/html; charset=utf-8\n\n";
     
     print "<html>";

     print "<head>";
     print '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
     print "<title>リスト</title>";

     print '</head>';
     print '<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000000" ALINK="#FF0000" VLINK="#990000">';
     print '<BR>';

     print '<TABLE cellSpacing="1" cellPadding="3" border="0" align="center">';
     print ' <TR><TD BGCOLOR="#FF0000" height="40" align="center"><FONT SIZE="6" COLOR="#FFFFFF">データベースが接続できません!事務局にご連絡ください</FONT></TD></TR>';
     print ' <TR><TD BGCOLOR="#C0C0C0" height="20"></TD></TR>';
     print '</TABLE>';
     print '</BODY>';
     print '</HTML>';
     
     exit();
     
    }

    ;# HTMLエンコード
    sub html_encode {
     my ($str) = @_;
     $str =~ s/\&/\&amp;/g;
     $str =~ s/\</\&lt;/g;
     $str =~ s/\>/\&gt;/g;
     $str =~ s/\"/\&quot;/g;
     return $str;
    }

    ;# HTMLデコード
    sub html_decode {
     my ($str) = @_;
     $str =~ s/\&amp;/\&/g;
     $str =~ s/\&lt;/\</g;
     $str =~ s/\&gt;/\>/g;
     $str =~ s/\&quot;/\"/g;
     return $str;
    }

    JavaScriptが下記となります。


    function doGetMail(  lngRow  )
    {
     var strPrdCd = ""
     var lngRowCount = form1.ROWNUM.value;

     if (lngRowCount == 1 )
     {
      strPrdCd = form1.PRDCT_CD_N.value;
     }
     else
     {
     
      strPrdCd = form1.PRDCT_CD_N(lngRow - 1).value;
     }

     window.open ("show.pl?PRDCD=" + strPrdCd , "newwindow", "height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")
    }


    function doOrder( lngRow )
    {
     var lngRowCount = form1.ROWNUM.value
     var lngSTOCK_CNT = 0;
     var lngOrderMax = 0
     var lngPrdCount = 0
     
     if (lngRowCount == 1 )
     {
      lngOrderMax = eval(form1.ORDER_MAX.value)
      lngPrdCount = eval(form1.PRDCOUNT_N.value)
      lngSTOCK_CNT = eval(form1.STOCK_CNT.value)
       
      if (lngPrdCount > lngOrderMax && lngOrderMax != 0)
      {
       window.alert("発注上限を超える注文数の入力はできません。");
       form1.PRDCOUNT_N.focus();
       return;
      }
      if(lngSTOCK_CNT <= 0)
      {
       window.alert("在庫が品切れです。");
       form1.PRDCOUNT_N.focus();
       return;
      }
      if(lngSTOCK_CNT < lngPrdCount)
      {
       window.alert("在庫数を超える注文数の入力はできません。");
       form1.PRDCOUNT_N.focus();
       return;
      }
      form1.PRDCT_CD.value =  form1.PRDCT_CD_N.value
      form1.SEARCHNOTE.value = form1.SEARCHNOTE_N.value
      form1.FUNC.value = form1.FUNC_N.value
      form1.CURPAGE.value = form1.CURPAGE_N.value
      form1.PAGENUM.value = form1.PAGENUM_N.value
      form1.PRDCOUNT.value = form1.PRDCOUNT_N.value
      form1.FUNC2.value = "INSERT";
     }
     else
     {
      lngOrderMax = eval(form1.ORDER_MAX(lngRow - 1).value)
      lngPrdCount = eval(form1.PRDCOUNT_N(lngRow - 1).value)
      lngSTOCK_CNT = eval(form1.STOCK_CNT(lngRow - 1).value)
      if (lngPrdCount > lngOrderMax && lngOrderMax != 0 )
      {
       window.alert("発注上限を超える注文数の入力はできません。");
       form1.PRDCOUNT_N(lngRow - 1).focus();
       return;
      }
      
      if(lngSTOCK_CNT <= 0)
      {
       window.alert("在庫が品切れです。");
       form1.PRDCOUNT_N(lngRow - 1).focus();
       return;
      }
      
      if(lngSTOCK_CNT < lngPrdCount)
      {
       window.alert("在庫数を超える注文数の入力はできません。");
       form1.PRDCOUNT_N(lngRow - 1).focus();
       return;
      }
      form1.PRDCT_CD.value =  form1.PRDCT_CD_N(lngRow - 1).value
      form1.SEARCHNOTE.value = form1.SEARCHNOTE_N(lngRow - 1).value
      form1.FUNC.value = form1.FUNC_N(lngRow - 1).value
      form1.CURPAGE.value = form1.CURPAGE_N(lngRow - 1).value
      form1.PAGENUM.value = form1.PAGENUM_N(lngRow - 1).value
      form1.PRDCOUNT.value = form1.PRDCOUNT_N(lngRow - 1).value
      form1.FUNC2.value = "INSERT";
     }

     form1.action = "list.pl"
     
     
     form1.submit();
    };

    2014年3月13日 0:13
  • > strPrdCd = form1.PRDCT_CD_N(lngRow - 1).value;

    単純に () を function として実行しているからではないでしょうか。

    エラー内容もそのことを表しているのでは?

    補足説明はここでいいのかな?


    > strPrdCd = form1.PRDCT_CD_N(lngRow - 1).value;
     > function doGetMail(  lngRow  )
     >  {
     >   var strPrdCd = ""
     >   var lngRowCount = form1.ROWNUM.value;
     >  if (lngRowCount == 1 )
     >   {
     >    strPrdCd = form1.PRDCT_CD_N.value;
     >   }
     >   else
     >   {
     >    strPrdCd = form1.PRDCT_CD_N(lngRow - 1).value;
     >   }

    上記を違う表現にすると次のようになるのではないでしょうか。

    strPrdCd = form1["PRDCT_CD_N"](lngRow - 1).value;
     function doGetMail(  lngRow  )
      {
       var strPrdCd = ""
       var lngRowCount = form1["ROWNUM"].value;
      if (lngRowCount == 1 )
       {
        strPrdCd = form1["PRDCT_CD_N"].value;
       }
       else
       {
        strPrdCd = form1["PRDCT_CD_N"](lngRow - 1).value;
       }


    この場合、通常 javascript で strPrdCd = form1["PRDCT_CD_N"](lngRow - 1).value; はメソッド を含むので 「F12 developer tools」でのエラー表示が「メンバーが見つかりません。」になります。

    逆にこれを有効にするには、それが可能かどうかは別にして prototype 等で form1.PRDCT_CD_N( ) という メソッド を作らないと エラーを回避できないと思われます。
    それはそれで過去の IE が使用できなくなるわけで・・。

    質問者さんの疑問は、ウィンドウズスクリプトプログラマ さんがおっしゃっている通り、仕様として受け入れるほかないと思います。

    僕は、IE11 の userAgent に like Gecko とあるように、ブラウザが「Gecko エンジンのような振る舞い」をするものと思っています。(おおよそ各ブラウザで同じ javascript が動くと)

    ちなみにご存知かもしれませんが IE11( mode Edge ) だけ(多分それ以後も)を切り分ける場合は次のものも使えます。

    // 「F12 developer tools」で調べたもの
    全ての IE には navigator.userLanguage がある。
    IE11 には navigator.language もある。( Mozilla Firefox, Google Chrome はこちらのみ ・・過去の物は判りません)
    IE11 で window.ActiveXObject は undefined になる。

    なので

    if( navigator.userLanguage )
     {/* 全ての IE */
        if( navigator.language ){ /* IE11 */}else{ /* IE5-10 */}
     }

    if( navigator.userLanguage )
     {/* 全ての IE */
       if( window.ActiveXObject ){/* IE5-10 */}else{/* IE11 */}
     }

    2014年3月13日 0:45
  • 先のレスで、

    > 問題を再現できる必要最小限に、ただしコピペすれば動く程度までに

    とお願いしたはずです。

    その理由は、(1) 必要最小限にコードを削っていく段階で問題の原因を見つけられる、(2) 原因が見つかれば自己解決できる可能性が高い、(3) 自己解決できなくても、そのコードをアップしてここの回答者が問題を再現できれば、解決策の提案を受けられる・・・からです。

    今はいわゆる丸投げ状態です。(1) の努力をしてください。

    質問者さんに技術的な知識がなくて (1) ができないなら、ここで聞いて解決するのは無理です。

    上司、先輩、同僚と相談されることをお勧めします。

    2014年3月13日 3:15
  • ()はitem()がIHTMLElementCollectionのデフォルトプロパティであるときの構文で、それが使えなくなったってことでしょう。その理由を聞かれてもねぇ。

    デフォルトプロパティでなくなったのか、デフォルトプロパティが効かなくなったのか、も分からないし。

    そもそもデフォルトの振る舞いに依存したコードを作るほうが悪いので、変更の理由なんかどうでもよい。

    納品先に原因を報告するために調べているのでしょうけど、プログラムのバグではなく、MSが仕様を変更したせいだ、と説明したいのでしょうが、悪いのはプログラムです。そう報告してください。

    補足、実際には、ドキュメントモードie7などで、プロパティ名を表示してみると、item()がなく、同じnameがデフォルトプロパティになってるようです。

    つまり、name()は、name.name()の略。

    2014年3月13日 11:33