Where The Streets Have No Name

스크립트를 통한 Form, IFrame, Hidden Field생성 본문

Developement/Web

스크립트를 통한 Form, IFrame, Hidden Field생성

highheat 2008. 6. 25. 12:34
출처 : http://blog.naver.com/pluggers/150008709559

/**
 * @type   : function
 * @access : public
 * @desc   : 스크립트를 통한 지정된 이름의 IFRAME생성(존재하면 해당 IFRAME을 반환하고, 없으면 IFRAME을 새로 생성)
 * @param  : name IFRAME 이름
 */
function cfCreateIFrame(name){
  if (!name) name = "";

  var ifr = document.getElementById(name);
  if (!ifr) {
    // 존재하지 않으면 새로 생성
   ifr = document.createElement('<IFRAME name="' + name + '"frameborder="no" scrolling="no" width="0"height="0"></IFRAME>');
    // Document에 추가
    document.appendChild(ifr);
  }
  return ifr;
}

 

javascript상에서 접근하려면 iframe의 readyState가 complete가 되어야 정상적인 접근이 가능

ifr.contentWindow.document.getElementById('cookie').innerText

이런식으로 iframe에 로딩된 문서에 접근가능

 

 

/**
 * @type   : function
 * @access : public
 * @desc   : 지정된 이름의 폼이 있으면 해당폼의 Elements들을 제거한 후 반환하고, 없으면 폼을 새로 생성해서 반환
 * @param  : name Form이름
 */
function cfCreateForm(name){
  if (!name) name = "";

  var frm = document.getElementById(name);
  if (!frm) {
    frm = document.createElement('<FORM name="' + name + '"></FORM>');
    document.appendChild(frm);
  }
  for (var i = frm.elements.length - 1; i >= 0; i--) {
    frm.removeChild(frm.elements[i]);
  }

  return frm;
}

 

 

 

/**
 * @type   : function
 * @access : public
 * @desc   : 지정된 폼에 Hidden Elements를 추가
 * @param  : frm Form Object
 * @param  : name Element명
 * @param  : value Value
 * @param  : multi 1인경우 같은이름으로 여러개 추가
 */
function cfAddHidden(frm, name, value, multi)
{
  if (!frm) return;
  if (!name || name == "") return;

  var obj = frm.elements[name];
  if (!(obj && obj.type == "hidden") || multi == 1) {
    obj = frm.document.createElement('<INPUT type="hidden" name="' + name + '">');
    frm.appendChild(obj);
  }
  if (value) obj.value = value;

  return obj;
}