これは奇妙なものです。なぜこれが起こっているのか理解できません。クリックを介して、<a>
タグの 'href'属性から取得したソースを持つ動的iframeを生成し、別のクリックでそれを破棄します。私は、そのiframe内に<body>
タグの高さを取得しようとすると、様々な拡張可能領域に基づいて高さと幅を変更するプロセスを開始します。しかし、以下の例では、高さを取得するのではなく、jQuery Javascriptファイル(実際はjquery-1.11.1.js)から関数を直接取得しています。ここでは、関連するコードは次のとおりです。jQuery JSファイルから動的に生成されたiFrameの戻り関数から高さを取得
$(document.body).on('click', 'table.foo tr td a', function(e){
e.preventDefault(); // anchor won't go to new page
e.stopPropagation(); // bubble-free click
var framesrc = $(this).attr('href')
$(this).closest('tr.varrow').after('<tr class="varFrameTr"><td colspan="2" class="varFrameCont"><iframe name="varFrame" class="varFrame" src='+framesrc+'></iframe><div class="closeiframe"><span class="glyphicon glyphicon-remove-sign"></span></div></td></tr>');
var color = '';
$('.varFrameTr').fadeIn(750, function(){
if($('td.varFrameCont').length)
{
$(this).find('iframe.varFrame').contents().on('click', 'div#framefoo' ,function(){
var tz = $(this).height;
console.log(tz);
});
} else {
console.log('nada');
}
});
});
簡単に言うが、div#framefoo
私はからの高さを取得しようとしていますインラインフレームで<body>
後にメインコンテナです。しかし、新しいテーブル行がアップフェードとiframeが呼び出されたときに、コンソールにその高さを取得した結果は、ライン10206から始まるjqueryの-1.11.1.jsで関数を返します。
function(margin, value) {
var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"),
extra = defaultExtra || (margin === true || value === true ? "margin" : "border");
return access(this, function(elem, type, value) {
var doc;
if (jQuery.isWindow(elem)) {
// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
// isn't a whole lot we can do. See pull request at this URL for discussion:
// https://github.com/jquery/jquery/pull/764
return elem.document.documentElement[ "client" + name ];
}
// Get document width or height
if (elem.nodeType === 9) {
doc = elem.documentElement;
// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
return Math.max(
elem.body[ "scroll" + name ], doc[ "scroll" + name ],
elem.body[ "offset" + name ], doc[ "offset" + name ],
doc[ "client" + name ]
);
}
return value === undefined ?
// Get width or height on the element, requesting but not forcing parseFloat
jQuery.css(elem, type, extra) :
// Set width or height on the element
jQuery.style(elem, type, value, extra);
}, type, chainable ? margin : undefined, chainable, null);
};
それは同じ結果ですもし私がちょうど<body>
タグをつかんでその高さを取得しようとするならば。 jQuery関数がjQの実際のJSで何かと衝突することでブレークするエラーを見たことがありますが、戻り値としてコードを直接返すことはありません。任意のアイデア、なぜこれが起こっているのか、この非常に奇妙なエラーがなくてもiframeの高さと幅内の要素を取得する方法は?ご協力いただきありがとうございます。