ruffle-rs / ruffle

A Flash Player emulator written in Rust
https://ruffle.rs
Other
15.77k stars 820 forks source link

Error on http://www.interlect.co.il/le/Default.aspx #7358

Open matoyoshi opened 2 years ago

matoyoshi commented 2 years ago

Describe the bug

Ruffle failed to run the flash animation inside Flash control panel.

However, when copy the source link of the flash file ruffle handle it successfully.

Error shown when ruffle runs inside a player: Error message inside player

The SWF file access as a direct link to: http://www.interlect.co.il/Courses/53/courseIntro.swf

02AD19B2-266F-4609-91E9-4894FCC53ECD

Expected behavior

Google chrome browser played the flash platform successfully with the adobe flash extension before Adobe removed their support in Flash.

Affected platform

Browser's extension

Operating system

Windows 10, Mac OS

Browser

Firefox, chrome, edge

Additional information

Interlect.co.il is an Education Platform made in Israel in the early 2000s.

These days it is a free platform that supports mainly high school students.

I will appreciate your help in order to get the platform useful again.

Toad06 commented 2 years ago

Thanks for the report.

It seems like some JavaScript code is conflicting with Ruffle.

If you open the browser's console and go to the Network tab, you should see that the SWF file Ruffle tries to load isn't http://www.interlect.co.il/Courses/53/courseIntro.swf as you'd expect but http://www.interlect.co.il/le/[object Object], causing the "failed to fetch" issue as the file doesn't exist.

It appears that this is caused by the Request function defined in this file: http://www.interlect.co.il/le/JS/Common/Protocol.js ... This overrides the native JS Request constructor (https://developer.mozilla.org/en-US/docs/Web/API/Request/Request) that Ruffle uses.

I'm pretty confident that renaming Request to something like RequestInterlect in Protocol.js and the different places that call this function would fix the issue. This is probably the best option as I don't really see how we could workaround this.

matoyoshi commented 2 years ago

Thank Toad for your response!

Do you think this problem causes the other paragraphs not to work also? Each hyperlink on the right side in http://www.interlect.co.il/le/Default.aspx suppose to run an SWF file but for some reason, it's failed, without a clear error message.

Anyway, I will check how I can rename the JS function from the server-side.

Thank you again

n0samu commented 2 years ago

The other SWFs on the site fail to load for an entirely different reason. For example, in b-new-053-03-02-05c-end.swf the following code is present on frame 1:

function checkflash()
{
   var _loc1_ = _root;
   if(_loc1_.vol != undefined || _loc1_.vol != null)
   {
      loadMovieNum("control.swf",255,"GET");
      clearInterval(c);
   }
   else
   {
      _loc1_.stop();
      fscommand("quit");
   }
}
c = setInterval(checkflash,10);

You can see that the movie quits if the vol variable is not set. This variable is normally set using JavaScript that communicates with the SWF file:

var flashObj = document.getElementById('flashObj');    
flashObj.SetVariable("vol", 100);
flashObj.SetVariable("mute", 0);

Unfortunately, Ruffle does not support this method of communication with an SWF file via JavaScript. See #3857 and #4395.

matoyoshi commented 2 years ago

Thanks for your response.

Do you know about any way to run it beside Ruffle? I know that it still works on IE in Windows 7 environment. But besides this rare situation, I have no idea how to run it.

matoyoshi commented 2 years ago

Its works! Awesome.

Thanks very much