Using Javascript to verify the existence of a function in a sibling frame before executing it

In the scenario where I have two frames within a window, Frame A and Frame B.

In order to invoke a function from Frame A while being in Frame B, I utilize the following code:

 parent.frames['mainframe'].myfunction();

The challenge arises when there is a possibility that the function does not exist in Frame A.

My objective is to verify its existence before making the call.

Although my attempt resulted in a JavaScript error.

if ( typeof parent.frames['mainframe'].myfunction == 'function' ) { 
        //function_name is a function
}

Error:

TypeError: undefined is not a function

Update:

To address the issue raised by all of you, it appears that the actual code run had the parentheses included - typeof parent.frames['mainframe'].myfunction(). Apologies for the confusion. How should I proceed regarding the best answer?

Answer №1

It seems like your code should be functioning correctly. The issue might be that the myfunction is not defined in the global scope of the child window. When you mention parent.frames['mainframe'], you are actually pointing to the window object within the 'mainframe' iframe. I have created a JSFiddle where the child function is explicitly assigned to the window object and it works without any problems.

View JSFiddle Example

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Could anyone clarify the concept of how a function is able to be equivalent to zero?

function checkForSpecialCharacters(text) { var specialChars = [";", "!", ".", "?", ",", "-"]; for(var i = 0; i < specialChars.length; i++) { if(text.indexOf(specialChars[i]) !== -1) { return true; } } ...

Issue with Angular 7 service worker caching audio files leads to range header problems in Safari browser

I am encountering an issue in my Angular application with the range request header for audio files when using Safari. When requesting audio from a server, the duration of the audio file is returned correctly. However, when requesting the audio from the ser ...

How can I modify the base color of a cone in Three.js?

My cone in the jsfiddle link is currently all blue, but I want to change the color of the square base to red. To do that, I need to alter the color of the two faces that make up the square base. How can this be achieved? View my cone on JsFiddle: http://j ...

React: the function is returning as undefined

Description I am encountering an issue with a function in a functional component, as it keeps returning undefined. Despite having all the necessary data defined and accurate within the function including tableData and subtractedStats. This seems to be a ...

Refresh the html page periodically by utilizing ajax every X seconds

Recently, I came across a post discussing the topic of automatically refreshing an HTML table every few seconds. The post can be found here. Currently, I am working with Rails and I want to achieve a similar functionality. However, I specifically want to ...

How to redirect in Next.js from uppercase to lowercase url

I'm trying to redirect visitors from /Contact to /contact. However, following the instructions in the documentation results in an endless loop of redirects. This is my attempted solution: // next.config.js async redirects() { return [ { ...

Utilizing MDX Component Properties in NextJS

Currently, I am in the process of developing a layout system for my upcoming app inspired by Adam Wathan's approach and his tailwind website. While I have successfully implemented it for js files, I am facing issues trying to apply the same syntax to ...

Tips for implementing PHP Instagram Signature using AJAX

I'm facing a challenge with the latest Instagram API, which now requires an Enforced Signed request that includes both an Access Token and Client Secret to generate a Signature. If anyone could spare some time to help me out, I would greatly apprecia ...

Tips for retrieving items from <ng-template>:

When the loader is set to false, I am trying to access an element by ID that is located inside the <ng-template>. In the subscribe function, after the loader changes to false and my content is rendered, I attempt to access the 'gif-html' el ...

Position an element with absolute positioning to the right edge of a relative element

I have a situation where I need to align the end of a position absolute element with the end of a relative element, but the relative element's width is not fixed and may vary based on content. https://i.sstatic.net/L2sLP.jpg This scenario arises as ...

Should we bundle everything into one script with webpack, considering Npm and Dev dependency or just dependencies?

Imagine a scenario where we use webpack to bundle all our code into a single JS file, which automatically imports dependencies. In this case, is it necessary to include any dependencies in the package.json, or can they all be listed as --save-dev? Let&apo ...

"Unlocking the power of Webpack in Electron: Incorporating and executing a bundled function within the

I am facing an issue where I am trying to access a function from my webpack bundle, but the function is turning out to be undefined. The entire object seems to be empty. In electron-main.js, you can see that I am calling appBundle.test(). I have searched ...

Guide on how to selectively add middleware such as multer to a fresh express router

For a previous project, I set up a router and utilized multer for handling file uploads. I was able to apply the multer middleware selectively on specific routes as shown below: var router = express.Router(); var multer = require('multer'); var ...

Implement a time interval in a recurring jQuery / Ajax operation

I'm attempting to introduce a delay into a repeating query. After some research, I've discovered that .delay isn't the right approach. Instead, it's recommended to use either setInterval or setTimeout. However, my attempts with both me ...

Resolving Undefined Vue Props Issue (handling props from Laravel blade)

I'm struggling to parse props from Laravel blade to a Vue component. Normally, this process works fine for me, but this time I am facing issues and it's not working at all. web.php Route::get('/catalog/{product_category_name}', functio ...

Accessing content from a text file and showcasing a designated line

Apologies if my wording was unclear... In this scenario, we will refer to the text file as example.txt. The value in question will be labeled as "Apple" My goal is to retrieve example.txt, search for Apple within it, and display the entire line where thi ...

Dynamic Line Animation with React Three Fiber

Is it possible to create a similar effect like the one showcased on this website: I'm looking to incorporate a dashed moving line that indicates direction. I prefer to use r3f, but regular three.js would also work. The background design is also app ...

Preserve the parameter navigation stored within a flatlist and showcase it on a separate screen

I am looking to save a navigation parameter from a flatlist so that it can be displayed on another screen. This parameter is essentially a title stored in an array for the flatlist. react-native ScreenA <FlatList data={ this.state.FlatListItems } key ...

Using Jquery ajax, I am interested in storing a single value into a variable for future use in JavaScript

I'm finally able to retrieve a JSON Get request, but I'm struggling with utilizing the information effectively. The array contains 9 items, but I only need one specific value - the id. I want to extract this id and save it in a variable for futur ...

When using the push() method in JavaScript to add a string to an array, the result is coming back

Here is an example input: { "algorithm_run": "mean: 07/02/2018 02:38:09F1 (Mhz) mean", "id": 12, "parameter": "F1 (Mhz) mean", "runs": "2017-09-19 15:41:00(0:00:59.350000)", "start_time": "2017-09-19 15:41:00", "value": 13.56298395 ...