Project

General

Profile

Actions

Bug #13446

closed

tx_Workspaces_Service_Fehooks::hook_eofe kills IE7 FE Javascript

Added by Anonymous over 13 years ago. Updated about 6 years ago.

Status:
Closed
Priority:
Should have
Category:
Workspaces
Target version:
-
Start date:
2011-02-28
Due date:
% Done:

100%

Estimated time:
TYPO3 Version:
PHP Version:
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

When using the preview mode in TYPO3 frontend most of Javascript wont work in Internet Explorer 7 because of the hook "hook_feofe".

The entire content of workspaces/Resources/Private/Templates/Preview/Preview.html is interpreted and inserted at the beginning of the PHP and so kills the HTML integrity.

A way of fixing this is to set the following lines in the hook:

$workspaceVars = t3lib_div::_GP('tx_workspaces_web_workspacesworkspaces');
if(count($workspaceVars) == 0) {
return;
}


Files

v1.patch (467 Bytes) v1.patch Tolleiv Nietsch, 2011-03-02 10:12
Actions #1

Updated by Jonas Felix over 13 years ago

This issue is very important!

Actions #2

Updated by Tolleiv Nietsch over 13 years ago

could you be a bit more precise? sure we add the whole template contents but what exactly is wrong in IE7 that this crashes?

Actions #3

Updated by Anonymous over 13 years ago

Hi,

the IE7 crashes because the HTML in clearly invalid.

in tx_Workspaces_Service_Fehooks::hook_eofe there is the following:
echo $GLOBALS['TSFE']->cObj->cObjGetSingle(
'FLUIDTEMPLATE',
array(
'file' => 'EXT:workspaces/Resources/Private/Templates/Preview/Preview.html',
'variables.' => array(
'backendDomain' => 'TEXT',
'backendDomain.' => array('value' => $GLOBALS['BE_USER']->getSessionData('workspaces.backend_domain'))
)
)
);

This generates a huge amount of code that is just thrown in the php output.

The HTML Code will look like this:

<script type="text/javascript">

        // @todo redirect to split module if this is opened standalone

        // having this is very important, otherwise the parent.resize call will fail
    document.domain = 'domainXY';

    var asNumber = function(val) {
        return isNaN(val) ? 0 : parseInt(val, 10);
    };
    var TYPO3 = {};
    TYPO3.ready = function () {
        // make sure we're in the workspace preview module
        if (typeof parent.resize == 'function') {
                // try to find the height of the document
            var docHeight = Math.max(
                asNumber(window.innerHeight),
                asNumber(document.height),
                asNumber(document.body.scrollHeight),
                asNumber(document.body.offsetHeight),
                asNumber(document.body.clientHeight),
                asNumber(document.documentElement.scrollHeight),
                asNumber(document.documentElement.offsetHeight),
                asNumber(document.documentElement.clientHeight)
            );
            parent.resize(docHeight);
                // remove the ugly red box if we're in the ws-repview frames
            var element = document.getElementById('typo3-previewInfo');
            element.parentNode.removeChild(element);
        }
    };
        // trigger this after content is loaded, inspired by jQuery
    if (document.addEventListener && !/opera/.test(navigator.userAgent.toLowerCase())) {
        document.addEventListener("DOMContentLoaded", TYPO3.ready, false);
    } else {
        (function() {
            if (document.readyState != "loaded" && document.readyState != "complete") {
                setTimeout(arguments.callee, 10);
            } else {
                TYPO3.ready();
            }
        })();
    }
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
...

This makes Internet Explorer overreacte (like little girls do when you take theire toys away) and break the javascript code.

Another way to fix this could be:

$params['pObj']->content = str_replace('</body>', $GLOBALS['TSFE']->cObj->cObjGetSingle(
    'FLUIDTEMPLATE',
    array(
        'file' => 'EXT:workspaces/Resources/Private/Templates/Preview/Preview.html',
        'variables.' => array(
            'backendDomain' => 'TEXT',
            'backendDomain.' => array('value' => $GLOBALS['BE_USER']->getSessionData('workspaces.backend_domain'))
        )
    )
).'</body>',$params['pObj']->content);

I think that what really makes IE7 feel so bad is that he doesn't get why there is a HTML Tag after there has already been a script tag. Or worse, he just ignores the <script>-tags and this code gets never executed.

Greets

Tizian

Actions #4

Updated by Tolleiv Nietsch over 13 years ago

Thanks, I'd propose this patch - would be great if you could test it

Actions #5

Updated by Tolleiv Nietsch over 13 years ago

  • Assignee set to Tolleiv Nietsch
  • Target version set to 4.5.3
Actions #6

Updated by Tolleiv Nietsch over 13 years ago

  • Status changed from Accepted to Under Review
Actions #8

Updated by Tolleiv Nietsch over 13 years ago

  • Status changed from Under Review to Resolved
  • % Done changed from 0 to 100

Applied in changeset commit:"9e9a5815c8ff69711d4720e62aff42be6fb2f6e5".

Actions #9

Updated by Oliver Hader over 13 years ago

  • Target version changed from 4.5.3 to 4.5.3
Actions #10

Updated by Oliver Hader over 13 years ago

  • Target version changed from 4.5.3 to 4.5.3
Actions #11

Updated by Simon Schaufelberger over 13 years ago

One question to that: The target version is 3.5.3 but the patch is still not applied. When will this patch be included in a minor release?

Actions #12

Updated by Michael Stucki almost 11 years ago

  • Category set to Workspaces
Actions #13

Updated by Michael Stucki almost 11 years ago

  • Project changed from 624 to TYPO3 Core
  • Category changed from Workspaces to Workspaces
  • Target version deleted (4.5.3)
Actions #14

Updated by Benni Mack about 6 years ago

  • Status changed from Resolved to Closed
Actions

Also available in: Atom PDF